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