# 8.11.6.3 IfcDeriveDimensionalExponents

## 8.11.6.3.1 Semantic definition

Definition from ISO/CD 10303-41:1992: The function determines the dimensional exponents of a unit. For named units the dimensions attribute is returned and for derived units the dimensional exponents are calculated from its elements.

Argument definitions: X: (input) the unit that the dimensional exponents are being derived from.

## 8.11.6.3.2 Formal representation

FUNCTION IfcDeriveDimensionalExponents
(UnitElements : SET [1:?] OF IfcDerivedUnitElement)
: IfcDimensionalExponents;
LOCAL
Result : IfcDimensionalExponents :=
IfcDimensionalExponents(0, 0, 0, 0, 0, 0, 0);
END_LOCAL;
REPEAT i := LOINDEX(UnitElements) TO HIINDEX(UnitElements);
Result.LengthExponent := Result.LengthExponent +
(UnitElements[i].Exponent *
UnitElements[i].Unit.Dimensions.LengthExponent);
Result.MassExponent := Result.MassExponent  +
(UnitElements[i].Exponent *
UnitElements[i].Unit.Dimensions.MassExponent);
Result.TimeExponent := Result.TimeExponent +
(UnitElements[i].Exponent *
UnitElements[i].Unit.Dimensions.TimeExponent);
Result.ElectricCurrentExponent := Result.ElectricCurrentExponent +
(UnitElements[i].Exponent *
UnitElements[i].Unit.Dimensions.ElectricCurrentExponent);
Result.ThermodynamicTemperatureExponent := Result.ThermodynamicTemperatureExponent +
(UnitElements[i].Exponent *
UnitElements[i].Unit.Dimensions.ThermodynamicTemperatureExponent);
Result.AmountOfSubstanceExponent := Result.AmountOfSubstanceExponent +
(UnitElements[i].Exponent *
UnitElements[i].Unit.Dimensions.AmountOfSubstanceExponent);
Result.LuminousIntensityExponent := Result.LuminousIntensityExponent +
(UnitElements[i].Exponent *
UnitElements[i].Unit.Dimensions.LuminousIntensityExponent);
END_REPEAT;
RETURN (Result);

END_FUNCTION;