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