View Javadoc
1   package org.djunits.value.vfloat.matrix;
2   
3   import javax.annotation.Generated;
4   
5   import org.djunits.Throw;
6   import org.djunits.unit.AbsorbedDoseUnit;
7   import org.djunits.unit.AccelerationUnit;
8   import org.djunits.unit.AmountOfSubstanceUnit;
9   import org.djunits.unit.AngleUnit;
10  import org.djunits.unit.AreaUnit;
11  import org.djunits.unit.CatalyticActivityUnit;
12  import org.djunits.unit.DensityUnit;
13  import org.djunits.unit.DimensionlessUnit;
14  import org.djunits.unit.DurationUnit;
15  import org.djunits.unit.ElectricalCapacitanceUnit;
16  import org.djunits.unit.ElectricalChargeUnit;
17  import org.djunits.unit.ElectricalConductanceUnit;
18  import org.djunits.unit.ElectricalCurrentUnit;
19  import org.djunits.unit.ElectricalInductanceUnit;
20  import org.djunits.unit.ElectricalPotentialUnit;
21  import org.djunits.unit.ElectricalResistanceUnit;
22  import org.djunits.unit.EnergyUnit;
23  import org.djunits.unit.EquivalentDoseUnit;
24  import org.djunits.unit.FlowMassUnit;
25  import org.djunits.unit.FlowVolumeUnit;
26  import org.djunits.unit.ForceUnit;
27  import org.djunits.unit.FrequencyUnit;
28  import org.djunits.unit.IlluminanceUnit;
29  import org.djunits.unit.LengthUnit;
30  import org.djunits.unit.LinearDensityUnit;
31  import org.djunits.unit.LuminousFluxUnit;
32  import org.djunits.unit.LuminousIntensityUnit;
33  import org.djunits.unit.MagneticFluxDensityUnit;
34  import org.djunits.unit.MagneticFluxUnit;
35  import org.djunits.unit.MassUnit;
36  import org.djunits.unit.PowerUnit;
37  import org.djunits.unit.PressureUnit;
38  import org.djunits.unit.RadioActivityUnit;
39  import org.djunits.unit.SIUnit;
40  import org.djunits.unit.SolidAngleUnit;
41  import org.djunits.unit.SpeedUnit;
42  import org.djunits.unit.TemperatureUnit;
43  import org.djunits.unit.TorqueUnit;
44  import org.djunits.unit.Unit;
45  import org.djunits.unit.VolumeUnit;
46  import org.djunits.unit.si.SIDimensions;
47  import org.djunits.unit.util.UnitRuntimeException;
48  import org.djunits.value.ValueRuntimeException;
49  import org.djunits.value.storage.StorageType;
50  import org.djunits.value.vfloat.matrix.base.AbstractFloatMatrixRel;
51  import org.djunits.value.vfloat.matrix.base.FloatMatrix;
52  import org.djunits.value.vfloat.matrix.data.FloatMatrixData;
53  import org.djunits.value.vfloat.scalar.FloatSIScalar;
54  import org.djunits.value.vfloat.scalar.base.AbstractFloatScalarRel;
55  import org.djunits.value.vfloat.vector.FloatSIVector;
56  import org.djunits.value.vfloat.vector.base.AbstractFloatVectorRel;
57  import org.djunits.value.vfloat.vector.data.FloatVectorData;
58  
59  /**
60   * Easy access methods for the generic Relative SI FloatMatrix.
61   * <p>
62   * Copyright (c) 2013-2019 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. <br>
63   * All rights reserved. <br>
64   * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
65   * </p>
66   * @author <a href="https://www.tudelft.nl/averbraeck">Alexander Verbraeck</a>
67   * @author <a href="https://www.tudelft.nl/staff/p.knoppers/">Peter Knoppers</a>
68   */
69  @Generated(value = "org.djunits.generator.GenerateDJUNIT", date = "2019-10-18T12:12:25.568Z")
70  public class FloatSIMatrix extends AbstractFloatMatrixRel<SIUnit, FloatSIScalar, FloatSIVector, FloatSIMatrix>
71  {
72      /** */
73      private static final long serialVersionUID = 20150901L;
74  
75      /**
76       * Construct a new Relative Float FloatSIMatrix.
77       * @param values float[][]; the values of the entries in the new Relative Float FloatSIMatrix
78       * @param unit SIUnit; the unit of the new Relative Float FloatSIMatrix
79       * @param storageType StorageType; the data type to use (e.g., DENSE or SPARSE)
80       * @return FloatSIMatrix; the FloatSIMatrix of the given unit
81       * @throws ValueRuntimeException when values is null
82       */
83      public static FloatSIMatrix instantiate(final float[][] values, final SIUnit unit, final StorageType storageType)
84              throws ValueRuntimeException
85      {
86          return new FloatSIMatrix(FloatMatrixData.instantiate(values, unit.getScale(), storageType), unit);
87      }
88  
89      /**
90       * @param data FloatMatrixData; an internal data object
91       * @param unit SIUnit; the unit
92       */
93      public FloatSIMatrix(final FloatMatrixData data, final SIUnit unit)
94      {
95          super(data, unit);
96      }
97  
98      /** {@inheritDoc} */
99      @Override
100     public Class<FloatSIScalar> getScalarClass()
101     {
102         return FloatSIScalar.class;
103     }
104 
105     /** {@inheritDoc} */
106     @Override
107     public Class<FloatSIVector> getVectorClass()
108     {
109         return FloatSIVector.class;
110     }
111 
112     /**
113      * Returns an FloatSIMatrix based on an array of values and the textual representation of the unit.
114      * @param values float[][]; the values to use
115      * @param unitString String; the textual representation of the unit
116      * @param storageType StorageType; the storage type to use
117      * @return FloatSIMatrix; the matrix representation of the values in their unit
118      * @throws IllegalArgumentException when the unit cannot be parsed or is incorrect
119      * @throws NullPointerException when the unitString argument is null
120      */
121     public static FloatSIMatrix of(final float[][] values, final String unitString, final StorageType storageType)
122     {
123         Throw.whenNull(values, "Error parsing FloatSIMatrix: value is null");
124         Throw.whenNull(unitString, "Error parsing FloatSIMatrix: unitString is null");
125         Throw.when(unitString.length() == 0, IllegalArgumentException.class, "Error parsing FloatSIMatrix: empty unitString");
126         Throw.whenNull(storageType, "Error parsing FloatSIMatrix: storageType is null");
127         try
128         {
129             SIUnit unit = Unit.lookupOrCreateUnitWithSIDimensions(SIDimensions.of(unitString));
130             if (unit != null)
131             {
132                 return FloatSIMatrix.instantiate(values, unit, storageType);
133             }
134         }
135         catch (Exception exception)
136         {
137             throw new IllegalArgumentException("Error parsing SIUnit from " + unitString, exception);
138         }
139         throw new IllegalArgumentException("Error parsing FloatSIMatrix with unit " + unitString);
140     }
141 
142     /** {@inheritDoc} */
143     @Override
144     public FloatSIMatrix instantiateMatrix(final FloatMatrixData fmd, final SIUnit unit)
145     {
146         return new FloatSIMatrix(fmd, unit);
147     }
148 
149     /** {@inheritDoc} */
150     @Override
151     public FloatSIVector instantiateVector(final FloatVectorData fvd, final SIUnit unit)
152     {
153         return new FloatSIVector(fvd, unit);
154     }
155 
156     /** {@inheritDoc} */
157     @Override
158     public FloatSIScalar instantiateScalarSI(final float valueSI, final SIUnit unit)
159     {
160         return new FloatSIScalar(valueSI, unit);
161     }
162 
163     /**********************************************************************************/
164     /******************************** 'CAST AS' METHODS *******************************/
165     /**********************************************************************************/
166 
167     /**
168      * Return the current matrix transformed to a matrix in the given unit. Of course the SI dimensionality has to match,
169      * otherwise the matrix cannot be transformed. The compiler will check the alignment between the return value and the unit.
170      * @param displayUnit KU; the unit in which the matrix needs to be expressed
171      * @return K; the matrix that has been transformed into the right matrix type and unit
172      * @param <U> the unit type
173      * @param <S> the corresponding scalar type
174      * @param <V> the corresponding vector type
175      * @param <M> the corresponding matrix type
176      */
177     public final <U extends Unit<U>, S extends AbstractFloatScalarRel<U, S>, V extends AbstractFloatVectorRel<U, S, V>,
178             M extends AbstractFloatMatrixRel<U, S, V, M>> M as(final U displayUnit)
179     {
180         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(displayUnit.getQuantity().getSiDimensions())),
181                 UnitRuntimeException.class, "FloatSIMatrix with unit %s cannot be converted to a FloatMatrix with unit %s",
182                 getDisplayUnit(), displayUnit);
183         M result = FloatMatrix.instantiate(this.data, displayUnit.getStandardUnit());
184         result.setDisplayUnit(displayUnit);
185         return result;
186     }
187 
188     /**
189      * Return the current matrix as a absorbeddose matrix.
190      * @return FloatAbsorbedDoseMatrix; the current matrix as a absorbeddose matrix
191      */
192     public final FloatAbsorbedDoseMatrix asAbsorbedDose()
193     {
194         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AbsorbedDoseUnit.BASE.getSiDimensions())),
195                 UnitRuntimeException.class, "cannot cast %s to FloatAbsorbedDoseMatrix", this.toString());
196         return new FloatAbsorbedDoseMatrix(this.data, AbsorbedDoseUnit.SI);
197     }
198 
199     /**
200      * Return the current matrix as a absorbeddose matrix, and provide a display unit.
201      * @param displayUnit the unit in which the value will be displayed
202      * @return FloatAbsorbedDoseMatrix; the current matrix as a absorbeddose matrix
203      */
204     public final FloatAbsorbedDoseMatrix asAbsorbedDose(final AbsorbedDoseUnit displayUnit)
205     {
206         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AbsorbedDoseUnit.BASE.getSiDimensions())),
207                 UnitRuntimeException.class, "cannot cast %s to FloatAbsorbedDoseMatrix", this.toString());
208         FloatAbsorbedDoseMatrixbedDoseMatrix.html#FloatAbsorbedDoseMatrix">FloatAbsorbedDoseMatrix result = new FloatAbsorbedDoseMatrix(this.data, displayUnit.getStandardUnit());
209         result.setDisplayUnit(displayUnit);
210         return result;
211     }
212 
213     /**
214      * Return the current matrix as a acceleration matrix.
215      * @return FloatAccelerationMatrix; the current matrix as a acceleration matrix
216      */
217     public final FloatAccelerationMatrix asAcceleration()
218     {
219         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AccelerationUnit.BASE.getSiDimensions())),
220                 UnitRuntimeException.class, "cannot cast %s to FloatAccelerationMatrix", this.toString());
221         return new FloatAccelerationMatrix(this.data, AccelerationUnit.SI);
222     }
223 
224     /**
225      * Return the current matrix as a acceleration matrix, and provide a display unit.
226      * @param displayUnit the unit in which the value will be displayed
227      * @return FloatAccelerationMatrix; the current matrix as a acceleration matrix
228      */
229     public final FloatAccelerationMatrix asAcceleration(final AccelerationUnit displayUnit)
230     {
231         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AccelerationUnit.BASE.getSiDimensions())),
232                 UnitRuntimeException.class, "cannot cast %s to FloatAccelerationMatrix", this.toString());
233         FloatAccelerationMatrixerationMatrix.html#FloatAccelerationMatrix">FloatAccelerationMatrix result = new FloatAccelerationMatrix(this.data, displayUnit.getStandardUnit());
234         result.setDisplayUnit(displayUnit);
235         return result;
236     }
237 
238     /**
239      * Return the current matrix as a amountofsubstance matrix.
240      * @return FloatAmountOfSubstanceMatrix; the current matrix as a amountofsubstance matrix
241      */
242     public final FloatAmountOfSubstanceMatrix asAmountOfSubstance()
243     {
244         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AmountOfSubstanceUnit.BASE.getSiDimensions())),
245                 UnitRuntimeException.class, "cannot cast %s to FloatAmountOfSubstanceMatrix", this.toString());
246         return new FloatAmountOfSubstanceMatrix(this.data, AmountOfSubstanceUnit.SI);
247     }
248 
249     /**
250      * Return the current matrix as a amountofsubstance matrix, and provide a display unit.
251      * @param displayUnit the unit in which the value will be displayed
252      * @return FloatAmountOfSubstanceMatrix; the current matrix as a amountofsubstance matrix
253      */
254     public final FloatAmountOfSubstanceMatrix asAmountOfSubstance(final AmountOfSubstanceUnit displayUnit)
255     {
256         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AmountOfSubstanceUnit.BASE.getSiDimensions())),
257                 UnitRuntimeException.class, "cannot cast %s to FloatAmountOfSubstanceMatrix", this.toString());
258         FloatAmountOfSubstanceMatrixbstanceMatrix.html#FloatAmountOfSubstanceMatrix">FloatAmountOfSubstanceMatrix result = new FloatAmountOfSubstanceMatrix(this.data, displayUnit.getStandardUnit());
259         result.setDisplayUnit(displayUnit);
260         return result;
261     }
262 
263     /**
264      * Return the current matrix as a area matrix.
265      * @return FloatAreaMatrix; the current matrix as a area matrix
266      */
267     public final FloatAreaMatrix asArea()
268     {
269         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AreaUnit.BASE.getSiDimensions())),
270                 UnitRuntimeException.class, "cannot cast %s to FloatAreaMatrix", this.toString());
271         return new FloatAreaMatrix(this.data, AreaUnit.SI);
272     }
273 
274     /**
275      * Return the current matrix as a area matrix, and provide a display unit.
276      * @param displayUnit the unit in which the value will be displayed
277      * @return FloatAreaMatrix; the current matrix as a area matrix
278      */
279     public final FloatAreaMatrix asArea(final AreaUnit displayUnit)
280     {
281         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AreaUnit.BASE.getSiDimensions())),
282                 UnitRuntimeException.class, "cannot cast %s to FloatAreaMatrix", this.toString());
283         FloatAreaMatrixoatAreaMatrix.html#FloatAreaMatrix">FloatAreaMatrix result = new FloatAreaMatrix(this.data, displayUnit.getStandardUnit());
284         result.setDisplayUnit(displayUnit);
285         return result;
286     }
287 
288     /**
289      * Return the current matrix as a catalyticactivity matrix.
290      * @return FloatCatalyticActivityMatrix; the current matrix as a catalyticactivity matrix
291      */
292     public final FloatCatalyticActivityMatrix asCatalyticActivity()
293     {
294         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(CatalyticActivityUnit.BASE.getSiDimensions())),
295                 UnitRuntimeException.class, "cannot cast %s to FloatCatalyticActivityMatrix", this.toString());
296         return new FloatCatalyticActivityMatrix(this.data, CatalyticActivityUnit.SI);
297     }
298 
299     /**
300      * Return the current matrix as a catalyticactivity matrix, and provide a display unit.
301      * @param displayUnit the unit in which the value will be displayed
302      * @return FloatCatalyticActivityMatrix; the current matrix as a catalyticactivity matrix
303      */
304     public final FloatCatalyticActivityMatrix asCatalyticActivity(final CatalyticActivityUnit displayUnit)
305     {
306         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(CatalyticActivityUnit.BASE.getSiDimensions())),
307                 UnitRuntimeException.class, "cannot cast %s to FloatCatalyticActivityMatrix", this.toString());
308         FloatCatalyticActivityMatrixctivityMatrix.html#FloatCatalyticActivityMatrix">FloatCatalyticActivityMatrix result = new FloatCatalyticActivityMatrix(this.data, displayUnit.getStandardUnit());
309         result.setDisplayUnit(displayUnit);
310         return result;
311     }
312 
313     /**
314      * Return the current matrix as a density matrix.
315      * @return FloatDensityMatrix; the current matrix as a density matrix
316      */
317     public final FloatDensityMatrix asDensity()
318     {
319         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DensityUnit.BASE.getSiDimensions())),
320                 UnitRuntimeException.class, "cannot cast %s to FloatDensityMatrix", this.toString());
321         return new FloatDensityMatrix(this.data, DensityUnit.SI);
322     }
323 
324     /**
325      * Return the current matrix as a density matrix, and provide a display unit.
326      * @param displayUnit the unit in which the value will be displayed
327      * @return FloatDensityMatrix; the current matrix as a density matrix
328      */
329     public final FloatDensityMatrix asDensity(final DensityUnit displayUnit)
330     {
331         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DensityUnit.BASE.getSiDimensions())),
332                 UnitRuntimeException.class, "cannot cast %s to FloatDensityMatrix", this.toString());
333         FloatDensityMatrixDensityMatrix.html#FloatDensityMatrix">FloatDensityMatrix result = new FloatDensityMatrix(this.data, displayUnit.getStandardUnit());
334         result.setDisplayUnit(displayUnit);
335         return result;
336     }
337 
338     /**
339      * Return the current matrix as a dimensionless matrix.
340      * @return FloatDimensionlessMatrix; the current matrix as a dimensionless matrix
341      */
342     public final FloatDimensionlessMatrix asDimensionless()
343     {
344         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DimensionlessUnit.BASE.getSiDimensions())),
345                 UnitRuntimeException.class, "cannot cast %s to FloatDimensionlessMatrix", this.toString());
346         return new FloatDimensionlessMatrix(this.data, DimensionlessUnit.SI);
347     }
348 
349     /**
350      * Return the current matrix as a dimensionless matrix, and provide a display unit.
351      * @param displayUnit the unit in which the value will be displayed
352      * @return FloatDimensionlessMatrix; the current matrix as a dimensionless matrix
353      */
354     public final FloatDimensionlessMatrix asDimensionless(final DimensionlessUnit displayUnit)
355     {
356         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DimensionlessUnit.BASE.getSiDimensions())),
357                 UnitRuntimeException.class, "cannot cast %s to FloatDimensionlessMatrix", this.toString());
358         FloatDimensionlessMatrixionlessMatrix.html#FloatDimensionlessMatrix">FloatDimensionlessMatrix result = new FloatDimensionlessMatrix(this.data, displayUnit.getStandardUnit());
359         result.setDisplayUnit(displayUnit);
360         return result;
361     }
362 
363     /**
364      * Return the current matrix as a electricalcapacitance matrix.
365      * @return FloatElectricalCapacitanceMatrix; the current matrix as a electricalcapacitance matrix
366      */
367     public final FloatElectricalCapacitanceMatrix asElectricalCapacitance()
368     {
369         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCapacitanceUnit.BASE.getSiDimensions())),
370                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalCapacitanceMatrix", this.toString());
371         return new FloatElectricalCapacitanceMatrix(this.data, ElectricalCapacitanceUnit.SI);
372     }
373 
374     /**
375      * Return the current matrix as a electricalcapacitance matrix, and provide a display unit.
376      * @param displayUnit the unit in which the value will be displayed
377      * @return FloatElectricalCapacitanceMatrix; the current matrix as a electricalcapacitance matrix
378      */
379     public final FloatElectricalCapacitanceMatrix asElectricalCapacitance(final ElectricalCapacitanceUnit displayUnit)
380     {
381         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCapacitanceUnit.BASE.getSiDimensions())),
382                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalCapacitanceMatrix", this.toString());
383         FloatElectricalCapacitanceMatrix result =
384                 new FloatElectricalCapacitanceMatrix(this.data, displayUnit.getStandardUnit());
385         result.setDisplayUnit(displayUnit);
386         return result;
387     }
388 
389     /**
390      * Return the current matrix as a electricalcharge matrix.
391      * @return FloatElectricalChargeMatrix; the current matrix as a electricalcharge matrix
392      */
393     public final FloatElectricalChargeMatrix asElectricalCharge()
394     {
395         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalChargeUnit.BASE.getSiDimensions())),
396                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalChargeMatrix", this.toString());
397         return new FloatElectricalChargeMatrix(this.data, ElectricalChargeUnit.SI);
398     }
399 
400     /**
401      * Return the current matrix as a electricalcharge matrix, and provide a display unit.
402      * @param displayUnit the unit in which the value will be displayed
403      * @return FloatElectricalChargeMatrix; the current matrix as a electricalcharge matrix
404      */
405     public final FloatElectricalChargeMatrix asElectricalCharge(final ElectricalChargeUnit displayUnit)
406     {
407         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalChargeUnit.BASE.getSiDimensions())),
408                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalChargeMatrix", this.toString());
409         FloatElectricalChargeMatrixlChargeMatrix.html#FloatElectricalChargeMatrix">FloatElectricalChargeMatrix result = new FloatElectricalChargeMatrix(this.data, displayUnit.getStandardUnit());
410         result.setDisplayUnit(displayUnit);
411         return result;
412     }
413 
414     /**
415      * Return the current matrix as a electricalconductance matrix.
416      * @return FloatElectricalConductanceMatrix; the current matrix as a electricalconductance matrix
417      */
418     public final FloatElectricalConductanceMatrix asElectricalConductance()
419     {
420         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalConductanceUnit.BASE.getSiDimensions())),
421                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalConductanceMatrix", this.toString());
422         return new FloatElectricalConductanceMatrix(this.data, ElectricalConductanceUnit.SI);
423     }
424 
425     /**
426      * Return the current matrix as a electricalconductance matrix, and provide a display unit.
427      * @param displayUnit the unit in which the value will be displayed
428      * @return FloatElectricalConductanceMatrix; the current matrix as a electricalconductance matrix
429      */
430     public final FloatElectricalConductanceMatrix asElectricalConductance(final ElectricalConductanceUnit displayUnit)
431     {
432         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalConductanceUnit.BASE.getSiDimensions())),
433                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalConductanceMatrix", this.toString());
434         FloatElectricalConductanceMatrix result =
435                 new FloatElectricalConductanceMatrix(this.data, displayUnit.getStandardUnit());
436         result.setDisplayUnit(displayUnit);
437         return result;
438     }
439 
440     /**
441      * Return the current matrix as a electricalcurrent matrix.
442      * @return FloatElectricalCurrentMatrix; the current matrix as a electricalcurrent matrix
443      */
444     public final FloatElectricalCurrentMatrix asElectricalCurrent()
445     {
446         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCurrentUnit.BASE.getSiDimensions())),
447                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalCurrentMatrix", this.toString());
448         return new FloatElectricalCurrentMatrix(this.data, ElectricalCurrentUnit.SI);
449     }
450 
451     /**
452      * Return the current matrix as a electricalcurrent matrix, and provide a display unit.
453      * @param displayUnit the unit in which the value will be displayed
454      * @return FloatElectricalCurrentMatrix; the current matrix as a electricalcurrent matrix
455      */
456     public final FloatElectricalCurrentMatrix asElectricalCurrent(final ElectricalCurrentUnit displayUnit)
457     {
458         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalCurrentUnit.BASE.getSiDimensions())),
459                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalCurrentMatrix", this.toString());
460         FloatElectricalCurrentMatrixCurrentMatrix.html#FloatElectricalCurrentMatrix">FloatElectricalCurrentMatrix result = new FloatElectricalCurrentMatrix(this.data, displayUnit.getStandardUnit());
461         result.setDisplayUnit(displayUnit);
462         return result;
463     }
464 
465     /**
466      * Return the current matrix as a electricalinductance matrix.
467      * @return FloatElectricalInductanceMatrix; the current matrix as a electricalinductance matrix
468      */
469     public final FloatElectricalInductanceMatrix asElectricalInductance()
470     {
471         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalInductanceUnit.BASE.getSiDimensions())),
472                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalInductanceMatrix", this.toString());
473         return new FloatElectricalInductanceMatrix(this.data, ElectricalInductanceUnit.SI);
474     }
475 
476     /**
477      * Return the current matrix as a electricalinductance matrix, and provide a display unit.
478      * @param displayUnit the unit in which the value will be displayed
479      * @return FloatElectricalInductanceMatrix; the current matrix as a electricalinductance matrix
480      */
481     public final FloatElectricalInductanceMatrix asElectricalInductance(final ElectricalInductanceUnit displayUnit)
482     {
483         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalInductanceUnit.BASE.getSiDimensions())),
484                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalInductanceMatrix", this.toString());
485         FloatElectricalInductanceMatrixuctanceMatrix.html#FloatElectricalInductanceMatrix">FloatElectricalInductanceMatrix result = new FloatElectricalInductanceMatrix(this.data, displayUnit.getStandardUnit());
486         result.setDisplayUnit(displayUnit);
487         return result;
488     }
489 
490     /**
491      * Return the current matrix as a electricalpotential matrix.
492      * @return FloatElectricalPotentialMatrix; the current matrix as a electricalpotential matrix
493      */
494     public final FloatElectricalPotentialMatrix asElectricalPotential()
495     {
496         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalPotentialUnit.BASE.getSiDimensions())),
497                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalPotentialMatrix", this.toString());
498         return new FloatElectricalPotentialMatrix(this.data, ElectricalPotentialUnit.SI);
499     }
500 
501     /**
502      * Return the current matrix as a electricalpotential matrix, and provide a display unit.
503      * @param displayUnit the unit in which the value will be displayed
504      * @return FloatElectricalPotentialMatrix; the current matrix as a electricalpotential matrix
505      */
506     public final FloatElectricalPotentialMatrix asElectricalPotential(final ElectricalPotentialUnit displayUnit)
507     {
508         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalPotentialUnit.BASE.getSiDimensions())),
509                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalPotentialMatrix", this.toString());
510         FloatElectricalPotentialMatrixtentialMatrix.html#FloatElectricalPotentialMatrix">FloatElectricalPotentialMatrix result = new FloatElectricalPotentialMatrix(this.data, displayUnit.getStandardUnit());
511         result.setDisplayUnit(displayUnit);
512         return result;
513     }
514 
515     /**
516      * Return the current matrix as a electricalresistance matrix.
517      * @return FloatElectricalResistanceMatrix; the current matrix as a electricalresistance matrix
518      */
519     public final FloatElectricalResistanceMatrix asElectricalResistance()
520     {
521         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalResistanceUnit.BASE.getSiDimensions())),
522                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalResistanceMatrix", this.toString());
523         return new FloatElectricalResistanceMatrix(this.data, ElectricalResistanceUnit.SI);
524     }
525 
526     /**
527      * Return the current matrix as a electricalresistance matrix, and provide a display unit.
528      * @param displayUnit the unit in which the value will be displayed
529      * @return FloatElectricalResistanceMatrix; the current matrix as a electricalresistance matrix
530      */
531     public final FloatElectricalResistanceMatrix asElectricalResistance(final ElectricalResistanceUnit displayUnit)
532     {
533         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ElectricalResistanceUnit.BASE.getSiDimensions())),
534                 UnitRuntimeException.class, "cannot cast %s to FloatElectricalResistanceMatrix", this.toString());
535         FloatElectricalResistanceMatrixistanceMatrix.html#FloatElectricalResistanceMatrix">FloatElectricalResistanceMatrix result = new FloatElectricalResistanceMatrix(this.data, displayUnit.getStandardUnit());
536         result.setDisplayUnit(displayUnit);
537         return result;
538     }
539 
540     /**
541      * Return the current matrix as a energy matrix.
542      * @return FloatEnergyMatrix; the current matrix as a energy matrix
543      */
544     public final FloatEnergyMatrix asEnergy()
545     {
546         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EnergyUnit.BASE.getSiDimensions())),
547                 UnitRuntimeException.class, "cannot cast %s to FloatEnergyMatrix", this.toString());
548         return new FloatEnergyMatrix(this.data, EnergyUnit.SI);
549     }
550 
551     /**
552      * Return the current matrix as a energy matrix, and provide a display unit.
553      * @param displayUnit the unit in which the value will be displayed
554      * @return FloatEnergyMatrix; the current matrix as a energy matrix
555      */
556     public final FloatEnergyMatrix asEnergy(final EnergyUnit displayUnit)
557     {
558         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EnergyUnit.BASE.getSiDimensions())),
559                 UnitRuntimeException.class, "cannot cast %s to FloatEnergyMatrix", this.toString());
560         FloatEnergyMatrixtEnergyMatrix.html#FloatEnergyMatrix">FloatEnergyMatrix result = new FloatEnergyMatrix(this.data, displayUnit.getStandardUnit());
561         result.setDisplayUnit(displayUnit);
562         return result;
563     }
564 
565     /**
566      * Return the current matrix as a equivalentdose matrix.
567      * @return FloatEquivalentDoseMatrix; the current matrix as a equivalentdose matrix
568      */
569     public final FloatEquivalentDoseMatrix asEquivalentDose()
570     {
571         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EquivalentDoseUnit.BASE.getSiDimensions())),
572                 UnitRuntimeException.class, "cannot cast %s to FloatEquivalentDoseMatrix", this.toString());
573         return new FloatEquivalentDoseMatrix(this.data, EquivalentDoseUnit.SI);
574     }
575 
576     /**
577      * Return the current matrix as a equivalentdose matrix, and provide a display unit.
578      * @param displayUnit the unit in which the value will be displayed
579      * @return FloatEquivalentDoseMatrix; the current matrix as a equivalentdose matrix
580      */
581     public final FloatEquivalentDoseMatrix asEquivalentDose(final EquivalentDoseUnit displayUnit)
582     {
583         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(EquivalentDoseUnit.BASE.getSiDimensions())),
584                 UnitRuntimeException.class, "cannot cast %s to FloatEquivalentDoseMatrix", this.toString());
585         FloatEquivalentDoseMatrixentDoseMatrix.html#FloatEquivalentDoseMatrix">FloatEquivalentDoseMatrix result = new FloatEquivalentDoseMatrix(this.data, displayUnit.getStandardUnit());
586         result.setDisplayUnit(displayUnit);
587         return result;
588     }
589 
590     /**
591      * Return the current matrix as a flowmass matrix.
592      * @return FloatFlowMassMatrix; the current matrix as a flowmass matrix
593      */
594     public final FloatFlowMassMatrix asFlowMass()
595     {
596         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowMassUnit.BASE.getSiDimensions())),
597                 UnitRuntimeException.class, "cannot cast %s to FloatFlowMassMatrix", this.toString());
598         return new FloatFlowMassMatrix(this.data, FlowMassUnit.SI);
599     }
600 
601     /**
602      * Return the current matrix as a flowmass matrix, and provide a display unit.
603      * @param displayUnit the unit in which the value will be displayed
604      * @return FloatFlowMassMatrix; the current matrix as a flowmass matrix
605      */
606     public final FloatFlowMassMatrix asFlowMass(final FlowMassUnit displayUnit)
607     {
608         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowMassUnit.BASE.getSiDimensions())),
609                 UnitRuntimeException.class, "cannot cast %s to FloatFlowMassMatrix", this.toString());
610         FloatFlowMassMatrixlowMassMatrix.html#FloatFlowMassMatrix">FloatFlowMassMatrix result = new FloatFlowMassMatrix(this.data, displayUnit.getStandardUnit());
611         result.setDisplayUnit(displayUnit);
612         return result;
613     }
614 
615     /**
616      * Return the current matrix as a flowvolume matrix.
617      * @return FloatFlowVolumeMatrix; the current matrix as a flowvolume matrix
618      */
619     public final FloatFlowVolumeMatrix asFlowVolume()
620     {
621         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowVolumeUnit.BASE.getSiDimensions())),
622                 UnitRuntimeException.class, "cannot cast %s to FloatFlowVolumeMatrix", this.toString());
623         return new FloatFlowVolumeMatrix(this.data, FlowVolumeUnit.SI);
624     }
625 
626     /**
627      * Return the current matrix as a flowvolume matrix, and provide a display unit.
628      * @param displayUnit the unit in which the value will be displayed
629      * @return FloatFlowVolumeMatrix; the current matrix as a flowvolume matrix
630      */
631     public final FloatFlowVolumeMatrix asFlowVolume(final FlowVolumeUnit displayUnit)
632     {
633         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FlowVolumeUnit.BASE.getSiDimensions())),
634                 UnitRuntimeException.class, "cannot cast %s to FloatFlowVolumeMatrix", this.toString());
635         FloatFlowVolumeMatrixwVolumeMatrix.html#FloatFlowVolumeMatrix">FloatFlowVolumeMatrix result = new FloatFlowVolumeMatrix(this.data, displayUnit.getStandardUnit());
636         result.setDisplayUnit(displayUnit);
637         return result;
638     }
639 
640     /**
641      * Return the current matrix as a force matrix.
642      * @return FloatForceMatrix; the current matrix as a force matrix
643      */
644     public final FloatForceMatrix asForce()
645     {
646         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ForceUnit.BASE.getSiDimensions())),
647                 UnitRuntimeException.class, "cannot cast %s to FloatForceMatrix", this.toString());
648         return new FloatForceMatrix(this.data, ForceUnit.SI);
649     }
650 
651     /**
652      * Return the current matrix as a force matrix, and provide a display unit.
653      * @param displayUnit the unit in which the value will be displayed
654      * @return FloatForceMatrix; the current matrix as a force matrix
655      */
656     public final FloatForceMatrix asForce(final ForceUnit displayUnit)
657     {
658         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(ForceUnit.BASE.getSiDimensions())),
659                 UnitRuntimeException.class, "cannot cast %s to FloatForceMatrix", this.toString());
660         FloatForceMatrixatForceMatrix.html#FloatForceMatrix">FloatForceMatrix result = new FloatForceMatrix(this.data, displayUnit.getStandardUnit());
661         result.setDisplayUnit(displayUnit);
662         return result;
663     }
664 
665     /**
666      * Return the current matrix as a frequency matrix.
667      * @return FloatFrequencyMatrix; the current matrix as a frequency matrix
668      */
669     public final FloatFrequencyMatrix asFrequency()
670     {
671         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FrequencyUnit.BASE.getSiDimensions())),
672                 UnitRuntimeException.class, "cannot cast %s to FloatFrequencyMatrix", this.toString());
673         return new FloatFrequencyMatrix(this.data, FrequencyUnit.SI);
674     }
675 
676     /**
677      * Return the current matrix as a frequency matrix, and provide a display unit.
678      * @param displayUnit the unit in which the value will be displayed
679      * @return FloatFrequencyMatrix; the current matrix as a frequency matrix
680      */
681     public final FloatFrequencyMatrix asFrequency(final FrequencyUnit displayUnit)
682     {
683         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(FrequencyUnit.BASE.getSiDimensions())),
684                 UnitRuntimeException.class, "cannot cast %s to FloatFrequencyMatrix", this.toString());
685         FloatFrequencyMatrixequencyMatrix.html#FloatFrequencyMatrix">FloatFrequencyMatrix result = new FloatFrequencyMatrix(this.data, displayUnit.getStandardUnit());
686         result.setDisplayUnit(displayUnit);
687         return result;
688     }
689 
690     /**
691      * Return the current matrix as a illuminance matrix.
692      * @return FloatIlluminanceMatrix; the current matrix as a illuminance matrix
693      */
694     public final FloatIlluminanceMatrix asIlluminance()
695     {
696         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(IlluminanceUnit.BASE.getSiDimensions())),
697                 UnitRuntimeException.class, "cannot cast %s to FloatIlluminanceMatrix", this.toString());
698         return new FloatIlluminanceMatrix(this.data, IlluminanceUnit.SI);
699     }
700 
701     /**
702      * Return the current matrix as a illuminance matrix, and provide a display unit.
703      * @param displayUnit the unit in which the value will be displayed
704      * @return FloatIlluminanceMatrix; the current matrix as a illuminance matrix
705      */
706     public final FloatIlluminanceMatrix asIlluminance(final IlluminanceUnit displayUnit)
707     {
708         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(IlluminanceUnit.BASE.getSiDimensions())),
709                 UnitRuntimeException.class, "cannot cast %s to FloatIlluminanceMatrix", this.toString());
710         FloatIlluminanceMatrixminanceMatrix.html#FloatIlluminanceMatrix">FloatIlluminanceMatrix result = new FloatIlluminanceMatrix(this.data, displayUnit.getStandardUnit());
711         result.setDisplayUnit(displayUnit);
712         return result;
713     }
714 
715     /**
716      * Return the current matrix as a lineardensity matrix.
717      * @return FloatLinearDensityMatrix; the current matrix as a lineardensity matrix
718      */
719     public final FloatLinearDensityMatrix asLinearDensity()
720     {
721         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LinearDensityUnit.BASE.getSiDimensions())),
722                 UnitRuntimeException.class, "cannot cast %s to FloatLinearDensityMatrix", this.toString());
723         return new FloatLinearDensityMatrix(this.data, LinearDensityUnit.SI);
724     }
725 
726     /**
727      * Return the current matrix as a lineardensity matrix, and provide a display unit.
728      * @param displayUnit the unit in which the value will be displayed
729      * @return FloatLinearDensityMatrix; the current matrix as a lineardensity matrix
730      */
731     public final FloatLinearDensityMatrix asLinearDensity(final LinearDensityUnit displayUnit)
732     {
733         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LinearDensityUnit.BASE.getSiDimensions())),
734                 UnitRuntimeException.class, "cannot cast %s to FloatLinearDensityMatrix", this.toString());
735         FloatLinearDensityMatrixDensityMatrix.html#FloatLinearDensityMatrix">FloatLinearDensityMatrix result = new FloatLinearDensityMatrix(this.data, displayUnit.getStandardUnit());
736         result.setDisplayUnit(displayUnit);
737         return result;
738     }
739 
740     /**
741      * Return the current matrix as a luminousflux matrix.
742      * @return FloatLuminousFluxMatrix; the current matrix as a luminousflux matrix
743      */
744     public final FloatLuminousFluxMatrix asLuminousFlux()
745     {
746         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousFluxUnit.BASE.getSiDimensions())),
747                 UnitRuntimeException.class, "cannot cast %s to FloatLuminousFluxMatrix", this.toString());
748         return new FloatLuminousFluxMatrix(this.data, LuminousFluxUnit.SI);
749     }
750 
751     /**
752      * Return the current matrix as a luminousflux matrix, and provide a display unit.
753      * @param displayUnit the unit in which the value will be displayed
754      * @return FloatLuminousFluxMatrix; the current matrix as a luminousflux matrix
755      */
756     public final FloatLuminousFluxMatrix asLuminousFlux(final LuminousFluxUnit displayUnit)
757     {
758         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousFluxUnit.BASE.getSiDimensions())),
759                 UnitRuntimeException.class, "cannot cast %s to FloatLuminousFluxMatrix", this.toString());
760         FloatLuminousFluxMatrixousFluxMatrix.html#FloatLuminousFluxMatrix">FloatLuminousFluxMatrix result = new FloatLuminousFluxMatrix(this.data, displayUnit.getStandardUnit());
761         result.setDisplayUnit(displayUnit);
762         return result;
763     }
764 
765     /**
766      * Return the current matrix as a luminousintensity matrix.
767      * @return FloatLuminousIntensityMatrix; the current matrix as a luminousintensity matrix
768      */
769     public final FloatLuminousIntensityMatrix asLuminousIntensity()
770     {
771         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousIntensityUnit.BASE.getSiDimensions())),
772                 UnitRuntimeException.class, "cannot cast %s to FloatLuminousIntensityMatrix", this.toString());
773         return new FloatLuminousIntensityMatrix(this.data, LuminousIntensityUnit.SI);
774     }
775 
776     /**
777      * Return the current matrix as a luminousintensity matrix, and provide a display unit.
778      * @param displayUnit the unit in which the value will be displayed
779      * @return FloatLuminousIntensityMatrix; the current matrix as a luminousintensity matrix
780      */
781     public final FloatLuminousIntensityMatrix asLuminousIntensity(final LuminousIntensityUnit displayUnit)
782     {
783         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LuminousIntensityUnit.BASE.getSiDimensions())),
784                 UnitRuntimeException.class, "cannot cast %s to FloatLuminousIntensityMatrix", this.toString());
785         FloatLuminousIntensityMatrixtensityMatrix.html#FloatLuminousIntensityMatrix">FloatLuminousIntensityMatrix result = new FloatLuminousIntensityMatrix(this.data, displayUnit.getStandardUnit());
786         result.setDisplayUnit(displayUnit);
787         return result;
788     }
789 
790     /**
791      * Return the current matrix as a magneticfluxdensity matrix.
792      * @return FloatMagneticFluxDensityMatrix; the current matrix as a magneticfluxdensity matrix
793      */
794     public final FloatMagneticFluxDensityMatrix asMagneticFluxDensity()
795     {
796         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxDensityUnit.BASE.getSiDimensions())),
797                 UnitRuntimeException.class, "cannot cast %s to FloatMagneticFluxDensityMatrix", this.toString());
798         return new FloatMagneticFluxDensityMatrix(this.data, MagneticFluxDensityUnit.SI);
799     }
800 
801     /**
802      * Return the current matrix as a magneticfluxdensity matrix, and provide a display unit.
803      * @param displayUnit the unit in which the value will be displayed
804      * @return FloatMagneticFluxDensityMatrix; the current matrix as a magneticfluxdensity matrix
805      */
806     public final FloatMagneticFluxDensityMatrix asMagneticFluxDensity(final MagneticFluxDensityUnit displayUnit)
807     {
808         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxDensityUnit.BASE.getSiDimensions())),
809                 UnitRuntimeException.class, "cannot cast %s to FloatMagneticFluxDensityMatrix", this.toString());
810         FloatMagneticFluxDensityMatrixDensityMatrix.html#FloatMagneticFluxDensityMatrix">FloatMagneticFluxDensityMatrix result = new FloatMagneticFluxDensityMatrix(this.data, displayUnit.getStandardUnit());
811         result.setDisplayUnit(displayUnit);
812         return result;
813     }
814 
815     /**
816      * Return the current matrix as a magneticflux matrix.
817      * @return FloatMagneticFluxMatrix; the current matrix as a magneticflux matrix
818      */
819     public final FloatMagneticFluxMatrix asMagneticFlux()
820     {
821         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxUnit.BASE.getSiDimensions())),
822                 UnitRuntimeException.class, "cannot cast %s to FloatMagneticFluxMatrix", this.toString());
823         return new FloatMagneticFluxMatrix(this.data, MagneticFluxUnit.SI);
824     }
825 
826     /**
827      * Return the current matrix as a magneticflux matrix, and provide a display unit.
828      * @param displayUnit the unit in which the value will be displayed
829      * @return FloatMagneticFluxMatrix; the current matrix as a magneticflux matrix
830      */
831     public final FloatMagneticFluxMatrix asMagneticFlux(final MagneticFluxUnit displayUnit)
832     {
833         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MagneticFluxUnit.BASE.getSiDimensions())),
834                 UnitRuntimeException.class, "cannot cast %s to FloatMagneticFluxMatrix", this.toString());
835         FloatMagneticFluxMatrixticFluxMatrix.html#FloatMagneticFluxMatrix">FloatMagneticFluxMatrix result = new FloatMagneticFluxMatrix(this.data, displayUnit.getStandardUnit());
836         result.setDisplayUnit(displayUnit);
837         return result;
838     }
839 
840     /**
841      * Return the current matrix as a mass matrix.
842      * @return FloatMassMatrix; the current matrix as a mass matrix
843      */
844     public final FloatMassMatrix asMass()
845     {
846         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MassUnit.BASE.getSiDimensions())),
847                 UnitRuntimeException.class, "cannot cast %s to FloatMassMatrix", this.toString());
848         return new FloatMassMatrix(this.data, MassUnit.SI);
849     }
850 
851     /**
852      * Return the current matrix as a mass matrix, and provide a display unit.
853      * @param displayUnit the unit in which the value will be displayed
854      * @return FloatMassMatrix; the current matrix as a mass matrix
855      */
856     public final FloatMassMatrix asMass(final MassUnit displayUnit)
857     {
858         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(MassUnit.BASE.getSiDimensions())),
859                 UnitRuntimeException.class, "cannot cast %s to FloatMassMatrix", this.toString());
860         FloatMassMatrixoatMassMatrix.html#FloatMassMatrix">FloatMassMatrix result = new FloatMassMatrix(this.data, displayUnit.getStandardUnit());
861         result.setDisplayUnit(displayUnit);
862         return result;
863     }
864 
865     /**
866      * Return the current matrix as a power matrix.
867      * @return FloatPowerMatrix; the current matrix as a power matrix
868      */
869     public final FloatPowerMatrix asPower()
870     {
871         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PowerUnit.BASE.getSiDimensions())),
872                 UnitRuntimeException.class, "cannot cast %s to FloatPowerMatrix", this.toString());
873         return new FloatPowerMatrix(this.data, PowerUnit.SI);
874     }
875 
876     /**
877      * Return the current matrix as a power matrix, and provide a display unit.
878      * @param displayUnit the unit in which the value will be displayed
879      * @return FloatPowerMatrix; the current matrix as a power matrix
880      */
881     public final FloatPowerMatrix asPower(final PowerUnit displayUnit)
882     {
883         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PowerUnit.BASE.getSiDimensions())),
884                 UnitRuntimeException.class, "cannot cast %s to FloatPowerMatrix", this.toString());
885         FloatPowerMatrixatPowerMatrix.html#FloatPowerMatrix">FloatPowerMatrix result = new FloatPowerMatrix(this.data, displayUnit.getStandardUnit());
886         result.setDisplayUnit(displayUnit);
887         return result;
888     }
889 
890     /**
891      * Return the current matrix as a pressure matrix.
892      * @return FloatPressureMatrix; the current matrix as a pressure matrix
893      */
894     public final FloatPressureMatrix asPressure()
895     {
896         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PressureUnit.BASE.getSiDimensions())),
897                 UnitRuntimeException.class, "cannot cast %s to FloatPressureMatrix", this.toString());
898         return new FloatPressureMatrix(this.data, PressureUnit.SI);
899     }
900 
901     /**
902      * Return the current matrix as a pressure matrix, and provide a display unit.
903      * @param displayUnit the unit in which the value will be displayed
904      * @return FloatPressureMatrix; the current matrix as a pressure matrix
905      */
906     public final FloatPressureMatrix asPressure(final PressureUnit displayUnit)
907     {
908         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(PressureUnit.BASE.getSiDimensions())),
909                 UnitRuntimeException.class, "cannot cast %s to FloatPressureMatrix", this.toString());
910         FloatPressureMatrixressureMatrix.html#FloatPressureMatrix">FloatPressureMatrix result = new FloatPressureMatrix(this.data, displayUnit.getStandardUnit());
911         result.setDisplayUnit(displayUnit);
912         return result;
913     }
914 
915     /**
916      * Return the current matrix as a radioactivity matrix.
917      * @return FloatRadioActivityMatrix; the current matrix as a radioactivity matrix
918      */
919     public final FloatRadioActivityMatrix asRadioActivity()
920     {
921         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(RadioActivityUnit.BASE.getSiDimensions())),
922                 UnitRuntimeException.class, "cannot cast %s to FloatRadioActivityMatrix", this.toString());
923         return new FloatRadioActivityMatrix(this.data, RadioActivityUnit.SI);
924     }
925 
926     /**
927      * Return the current matrix as a radioactivity matrix, and provide a display unit.
928      * @param displayUnit the unit in which the value will be displayed
929      * @return FloatRadioActivityMatrix; the current matrix as a radioactivity matrix
930      */
931     public final FloatRadioActivityMatrix asRadioActivity(final RadioActivityUnit displayUnit)
932     {
933         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(RadioActivityUnit.BASE.getSiDimensions())),
934                 UnitRuntimeException.class, "cannot cast %s to FloatRadioActivityMatrix", this.toString());
935         FloatRadioActivityMatrixctivityMatrix.html#FloatRadioActivityMatrix">FloatRadioActivityMatrix result = new FloatRadioActivityMatrix(this.data, displayUnit.getStandardUnit());
936         result.setDisplayUnit(displayUnit);
937         return result;
938     }
939 
940     /**
941      * Return the current matrix as a solidangle matrix.
942      * @return FloatSolidAngleMatrix; the current matrix as a solidangle matrix
943      */
944     public final FloatSolidAngleMatrix asSolidAngle()
945     {
946         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SolidAngleUnit.BASE.getSiDimensions())),
947                 UnitRuntimeException.class, "cannot cast %s to FloatSolidAngleMatrix", this.toString());
948         return new FloatSolidAngleMatrix(this.data, SolidAngleUnit.SI);
949     }
950 
951     /**
952      * Return the current matrix as a solidangle matrix, and provide a display unit.
953      * @param displayUnit the unit in which the value will be displayed
954      * @return FloatSolidAngleMatrix; the current matrix as a solidangle matrix
955      */
956     public final FloatSolidAngleMatrix asSolidAngle(final SolidAngleUnit displayUnit)
957     {
958         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SolidAngleUnit.BASE.getSiDimensions())),
959                 UnitRuntimeException.class, "cannot cast %s to FloatSolidAngleMatrix", this.toString());
960         FloatSolidAngleMatrixidAngleMatrix.html#FloatSolidAngleMatrix">FloatSolidAngleMatrix result = new FloatSolidAngleMatrix(this.data, displayUnit.getStandardUnit());
961         result.setDisplayUnit(displayUnit);
962         return result;
963     }
964 
965     /**
966      * Return the current matrix as a speed matrix.
967      * @return FloatSpeedMatrix; the current matrix as a speed matrix
968      */
969     public final FloatSpeedMatrix asSpeed()
970     {
971         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SpeedUnit.BASE.getSiDimensions())),
972                 UnitRuntimeException.class, "cannot cast %s to FloatSpeedMatrix", this.toString());
973         return new FloatSpeedMatrix(this.data, SpeedUnit.SI);
974     }
975 
976     /**
977      * Return the current matrix as a speed matrix, and provide a display unit.
978      * @param displayUnit the unit in which the value will be displayed
979      * @return FloatSpeedMatrix; the current matrix as a speed matrix
980      */
981     public final FloatSpeedMatrix asSpeed(final SpeedUnit displayUnit)
982     {
983         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(SpeedUnit.BASE.getSiDimensions())),
984                 UnitRuntimeException.class, "cannot cast %s to FloatSpeedMatrix", this.toString());
985         FloatSpeedMatrixatSpeedMatrix.html#FloatSpeedMatrix">FloatSpeedMatrix result = new FloatSpeedMatrix(this.data, displayUnit.getStandardUnit());
986         result.setDisplayUnit(displayUnit);
987         return result;
988     }
989 
990     /**
991      * Return the current matrix as a torque matrix.
992      * @return FloatTorqueMatrix; the current matrix as a torque matrix
993      */
994     public final FloatTorqueMatrix asTorque()
995     {
996         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TorqueUnit.BASE.getSiDimensions())),
997                 UnitRuntimeException.class, "cannot cast %s to FloatTorqueMatrix", this.toString());
998         return new FloatTorqueMatrix(this.data, TorqueUnit.SI);
999     }
1000 
1001     /**
1002      * Return the current matrix as a torque matrix, and provide a display unit.
1003      * @param displayUnit the unit in which the value will be displayed
1004      * @return FloatTorqueMatrix; the current matrix as a torque matrix
1005      */
1006     public final FloatTorqueMatrix asTorque(final TorqueUnit displayUnit)
1007     {
1008         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TorqueUnit.BASE.getSiDimensions())),
1009                 UnitRuntimeException.class, "cannot cast %s to FloatTorqueMatrix", this.toString());
1010         FloatTorqueMatrixtTorqueMatrix.html#FloatTorqueMatrix">FloatTorqueMatrix result = new FloatTorqueMatrix(this.data, displayUnit.getStandardUnit());
1011         result.setDisplayUnit(displayUnit);
1012         return result;
1013     }
1014 
1015     /**
1016      * Return the current matrix as a volume matrix.
1017      * @return FloatVolumeMatrix; the current matrix as a volume matrix
1018      */
1019     public final FloatVolumeMatrix asVolume()
1020     {
1021         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(VolumeUnit.BASE.getSiDimensions())),
1022                 UnitRuntimeException.class, "cannot cast %s to FloatVolumeMatrix", this.toString());
1023         return new FloatVolumeMatrix(this.data, VolumeUnit.SI);
1024     }
1025 
1026     /**
1027      * Return the current matrix as a volume matrix, and provide a display unit.
1028      * @param displayUnit the unit in which the value will be displayed
1029      * @return FloatVolumeMatrix; the current matrix as a volume matrix
1030      */
1031     public final FloatVolumeMatrix asVolume(final VolumeUnit displayUnit)
1032     {
1033         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(VolumeUnit.BASE.getSiDimensions())),
1034                 UnitRuntimeException.class, "cannot cast %s to FloatVolumeMatrix", this.toString());
1035         FloatVolumeMatrixtVolumeMatrix.html#FloatVolumeMatrix">FloatVolumeMatrix result = new FloatVolumeMatrix(this.data, displayUnit.getStandardUnit());
1036         result.setDisplayUnit(displayUnit);
1037         return result;
1038     }
1039 
1040     /**
1041      * Return the current matrix as a angle matrix.
1042      * @return FloatAngleMatrix; the current matrix as a angle matrix
1043      */
1044     public final FloatAngleMatrix asAngle()
1045     {
1046         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngleUnit.BASE.getSiDimensions())),
1047                 UnitRuntimeException.class, "cannot cast %s to FloatAngleMatrix", this.toString());
1048         return new FloatAngleMatrix(this.data, AngleUnit.SI);
1049     }
1050 
1051     /**
1052      * Return the current matrix as a angle matrix, and provide a display unit.
1053      * @param displayUnit the unit in which the value will be displayed
1054      * @return FloatAngleMatrix; the current matrix as a angle matrix
1055      */
1056     public final FloatAngleMatrix asAngle(final AngleUnit displayUnit)
1057     {
1058         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(AngleUnit.BASE.getSiDimensions())),
1059                 UnitRuntimeException.class, "cannot cast %s to FloatAngleMatrix", this.toString());
1060         FloatAngleMatrixatAngleMatrix.html#FloatAngleMatrix">FloatAngleMatrix result = new FloatAngleMatrix(this.data, displayUnit.getStandardUnit());
1061         result.setDisplayUnit(displayUnit);
1062         return result;
1063     }
1064 
1065     /**
1066      * Return the current matrix as a length matrix.
1067      * @return FloatLengthMatrix; the current matrix as a length matrix
1068      */
1069     public final FloatLengthMatrix asLength()
1070     {
1071         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LengthUnit.BASE.getSiDimensions())),
1072                 UnitRuntimeException.class, "cannot cast %s to FloatLengthMatrix", this.toString());
1073         return new FloatLengthMatrix(this.data, LengthUnit.SI);
1074     }
1075 
1076     /**
1077      * Return the current matrix as a length matrix, and provide a display unit.
1078      * @param displayUnit the unit in which the value will be displayed
1079      * @return FloatLengthMatrix; the current matrix as a length matrix
1080      */
1081     public final FloatLengthMatrix asLength(final LengthUnit displayUnit)
1082     {
1083         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(LengthUnit.BASE.getSiDimensions())),
1084                 UnitRuntimeException.class, "cannot cast %s to FloatLengthMatrix", this.toString());
1085         FloatLengthMatrixtLengthMatrix.html#FloatLengthMatrix">FloatLengthMatrix result = new FloatLengthMatrix(this.data, displayUnit.getStandardUnit());
1086         result.setDisplayUnit(displayUnit);
1087         return result;
1088     }
1089 
1090     /**
1091      * Return the current matrix as a temperature matrix.
1092      * @return FloatTemperatureMatrix; the current matrix as a temperature matrix
1093      */
1094     public final FloatTemperatureMatrix asTemperature()
1095     {
1096         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TemperatureUnit.BASE.getSiDimensions())),
1097                 UnitRuntimeException.class, "cannot cast %s to FloatTemperatureMatrix", this.toString());
1098         return new FloatTemperatureMatrix(this.data, TemperatureUnit.SI);
1099     }
1100 
1101     /**
1102      * Return the current matrix as a temperature matrix, and provide a display unit.
1103      * @param displayUnit the unit in which the value will be displayed
1104      * @return FloatTemperatureMatrix; the current matrix as a temperature matrix
1105      */
1106     public final FloatTemperatureMatrix asTemperature(final TemperatureUnit displayUnit)
1107     {
1108         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(TemperatureUnit.BASE.getSiDimensions())),
1109                 UnitRuntimeException.class, "cannot cast %s to FloatTemperatureMatrix", this.toString());
1110         FloatTemperatureMatrixeratureMatrix.html#FloatTemperatureMatrix">FloatTemperatureMatrix result = new FloatTemperatureMatrix(this.data, displayUnit.getStandardUnit());
1111         result.setDisplayUnit(displayUnit);
1112         return result;
1113     }
1114 
1115     /**
1116      * Return the current matrix as a duration matrix.
1117      * @return FloatDurationMatrix; the current matrix as a duration matrix
1118      */
1119     public final FloatDurationMatrix asDuration()
1120     {
1121         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DurationUnit.BASE.getSiDimensions())),
1122                 UnitRuntimeException.class, "cannot cast %s to FloatDurationMatrix", this.toString());
1123         return new FloatDurationMatrix(this.data, DurationUnit.SI);
1124     }
1125 
1126     /**
1127      * Return the current matrix as a duration matrix, and provide a display unit.
1128      * @param displayUnit the unit in which the value will be displayed
1129      * @return FloatDurationMatrix; the current matrix as a duration matrix
1130      */
1131     public final FloatDurationMatrix asDuration(final DurationUnit displayUnit)
1132     {
1133         Throw.when(!(getDisplayUnit().getQuantity().getSiDimensions().equals(DurationUnit.BASE.getSiDimensions())),
1134                 UnitRuntimeException.class, "cannot cast %s to FloatDurationMatrix", this.toString());
1135         FloatDurationMatrixurationMatrix.html#FloatDurationMatrix">FloatDurationMatrix result = new FloatDurationMatrix(this.data, displayUnit.getStandardUnit());
1136         result.setDisplayUnit(displayUnit);
1137         return result;
1138     }
1139 
1140 }