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