1#ifndef CPP_UTILITIES_DIMENSIONALANALYSIS_HPP
2#define CPP_UTILITIES_DIMENSIONALANALYSIS_HPP
86template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
91#if __cplusplus >= 201402L
93 static constexpr std::tuple<int, int, int, int, int, int, int>
factors{
94 length, mass, time, current, temperature, amountOfSubstance, luminousIntensity
98 static const std::tuple<int, int, int, int, int, int, int>
factors;
115#if __cplusplus < 201703L
116#if __cplusplus >= 201402L
117template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
118constexpr std::tuple<int, int, int, int, int, int, int>
Unit<length, mass, time, current, temperature, amountOfSubstance, luminousIntensity>::factors;
120template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
121const std::tuple<int, int, int, int, int, int, int>
Unit<length, mass, time, current, temperature, amountOfSubstance, luminousIntensity>::factors{
122 length, mass, time, current, temperature, amountOfSubstance, luminousIntensity
125template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
127template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
129template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
131template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
133template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
135template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
137template<
int length,
int mass,
int time,
int current,
int temperature,
int amountOfSubstance,
int luminousIntensity>
153template<
typename Unit1,
typename Unit2>
155 Unit1::factorLength + Unit2::factorLength,
156 Unit1::factorMass + Unit2::factorMass,
157 Unit1::factorTime + Unit2::factorTime,
158 Unit1::factorCurrent + Unit2::factorCurrent,
159 Unit1::factorTemperature + Unit2::factorTemperature,
160 Unit1::factorAmountOfSubstance + Unit2::factorAmountOfSubstance,
161 Unit1::factorLuminousIntensity + Unit2::factorLuminousIntensity
168template<
typename Unit1,
typename Unit2>
170 Unit1::factorLength - Unit2::factorLength,
171 Unit1::factorMass - Unit2::factorMass,
172 Unit1::factorTime - Unit2::factorTime,
173 Unit1::factorCurrent - Unit2::factorCurrent,
174 Unit1::factorTemperature - Unit2::factorTemperature,
175 Unit1::factorAmountOfSubstance - Unit2::factorAmountOfSubstance,
176 Unit1::factorLuminousIntensity - Unit2::factorLuminousIntensity
183template<
typename U,
int n>
188 U::factorCurrent * n,
189 U::factorTemperature * n,
190 U::factorAmountOfSubstance * n,
191 U::factorLuminousIntensity * n
198template<
typename U,
int n>
203 U::factorCurrent / n,
204 U::factorTemperature / n,
205 U::factorAmountOfSubstance / n,
206 U::factorLuminousIntensity / n
373template<
typename T,
typename Unit,
typename Ratio>
375template<
typename NewRatio,
typename T,
typename U,
typename Ratio>
392template<
typename T,
typename U,
typename Ratio = std::ratio<1>>
426 template<
typename OtherRatio>
454 {
return quantity_cast<std::ratio<1>>(*this).value(); }
472 template<
typename OtherRatio>
475 { v += quantity_cast<Ratio>(other).v;
return *
this; }
484 { v = other.v;
return *
this; }
494 template<
typename OtherRatio>
497 { v = quantity_cast<Ratio>(other).v;
return *
this; }
506 template<
typename OtherRatio>
508 {
return v == quantity_cast<Ratio>(other).v; }
517 template<
typename OtherRatio>
519 {
return !(*
this == other); }
528 template<
typename OtherRatio>
530 {
return v < quantity_cast<Ratio>(other).v; }
539 template<
typename OtherRatio>
541 {
return (*
this < other) || (*
this == other); }
550 template<
typename OtherRatio>
552 {
return !(*
this <= other); }
561 template<
typename OtherRatio>
563 {
return !(*
this < other); }
581template<
typename T,
typename U,
typename Ratio1,
typename Ratio2>
582inline Quantity<T, U, Ratio1>
586 + quantity_cast<Ratio1>(rhs).value());
602template<
typename T,
typename U,
typename Ratio1,
typename Ratio2>
607 - quantity_cast<Ratio1>(rhs).value());
624template<
typename T,
typename Unit1,
typename Ratio1,
typename Unit2,
typename Ratio2>
628 using dim = UnitMultiply<Unit1, Unit2>;
630 * quantity_cast<Ratio1>(rhs).value());
647template<
typename T,
typename Unit1,
typename Ratio1,
typename Unit2,
typename Ratio2>
651 using dim = UnitDivide<Unit1, Unit2>;
653 / quantity_cast<Ratio1>(rhs).value());
667template<
int factor,
typename T,
typename U,
typename Ratio>
690template<
int factor,
typename T,
typename U,
typename Ratio>
714template<
typename NewRatio,
typename T,
typename U,
typename Ratio>
717 using ratio_div = std::ratio_divide<Ratio, NewRatio>;
719 * (
static_cast<long double>(ratio_div::num) / ratio_div::den);
756typedef std::ratio_divide<ratio_length_li, std::ratio<15>>
ratio_yin;
766typedef std::ratio_divide<ratio_zhang, std::ratio<2>>
ratio_xun;
771typedef std::ratio_divide<ratio_zhang, std::ratio<10>>
ratio_chi;
776typedef std::ratio_divide<ratio_chi, std::ratio<10>>
ratio_cun;
816typedef std::ratio_divide<ratio_mu, std::ratio<240>>
ratio_gong;
836typedef std::ratio_divide<ratio_liang, std::ratio<10>>
ratio_qian;
874typedef std::ratio_multiply<std::ratio<1609344ll, 1000000ll>, std::kilo>
ratio_mile;
884typedef std::ratio_divide<ratio_furlong, std::ratio<10>>
ratio_chain;
889typedef std::ratio_divide<ratio_chain, std::ratio<22>>
ratio_yard;
894typedef std::ratio_divide<ratio_yard, std::ratio<16>>
ratio_nail;
899typedef std::ratio_divide<ratio_yard, std::ratio<3>>
ratio_feet;
904typedef std::ratio_divide<ratio_feet, std::ratio<12>>
ratio_inch;
909typedef std::ratio_divide<ratio_inch, std::ratio<6>>
ratio_pica;
944typedef std::ratio_divide<ratio_pound, std::ratio<16>>
ratio_ounce;
954typedef std::ratio_multiply<std::ratio<6479891, 100000ll>, std::micro>
ratio_grain;
992typedef std::ratio_multiply<ratio_en_fluid_ounce, std::ratio<5>>
ratio_en_gill;
1085typedef std::ratio_multiply<std::ratio<5506104713575ll, 10000000000000ll>, std::milli>
ratio_us_dry_pint;
#define UTILITIES_NAMESPACE_END
Define for end namespace declaration, nothing will be generated if UTILITIES_NAMESPACE isn't defined.
Definition: Common.h:92
#define UTILITIES_NAMESPACE_BEGIN
Define for begin namespace declaration, nothing will be generated if UTILITIES_NAMESPACE isn't define...
Definition: Common.h:91
The Quantity struct is used to describe arithmetic values with units.
Definition: DimensionalAnalysis.hpp:394
std::ratio_divide< ratio_mass_li, std::ratio< 10 > > ratio_mass_hao
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:851
std::ratio_multiply< ratio_en_fluid_dram, std::ratio< 8 > > ratio_en_fluid_ounce
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:987
T value_type
Value type for this quantity struct.
Definition: DimensionalAnalysis.hpp:399
Quantity(const Quantity< T, U, Ratio > &other)
Copy constructor.
Definition: DimensionalAnalysis.hpp:417
std::ratio_multiply< ratio_us_quart, std::ratio< 4 > > ratio_us_gallon
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1080
std::ratio_divide< ratio_inch, std::ratio< 6 > > ratio_pica
Ratio to convert to meter, with symbol pc. .
Definition: DimensionalAnalysis.hpp:909
Quantity< T, U, Ratio1 > operator-(Quantity< T, U, Ratio1 > &lhs, Quantity< T, U, Ratio2 > rhs)
Subtract operator overload, values will be converted to same ratio before calculation,...
Definition: DimensionalAnalysis.hpp:604
bool operator>=(const Quantity< T, U, OtherRatio > &other) const
Larger or equal operator overload, value will be convered to same ratio before comparison.
Definition: DimensionalAnalysis.hpp:562
std::ratio_multiply< ratio_en_quart, std::ratio< 4 > > ratio_en_gallon
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1012
Quantity(T x=0)
Default constructor.
Definition: DimensionalAnalysis.hpp:409
std::ratio_divide< ratio_feet, std::ratio< 12 > > ratio_inch
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:904
std::ratio< 90718474, 100000 > ratio_shortton
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:924
std::ratio_divide< ratio_mass_fen, std::ratio< 10 > > ratio_mass_li
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:846
std::ratio_divide< ratio_yard, std::ratio< 3 > > ratio_feet
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:899
Quantity< T, U, Ratio1 > operator+(Quantity< T, U, Ratio1 > lhs, Quantity< T, U, Ratio2 > rhs)
Plus operator overload, values will be converted to same ratio before calculation,...
Definition: DimensionalAnalysis.hpp:583
ratio_short_hundredweight ratio_us_hundredweight
Ratio to convert to kilogram .
Definition: DimensionalAnalysis.hpp:1035
std::ratio< 1, 2 > ratio_jin
Ratio to convert to kilogram, also called market carry. .
Definition: DimensionalAnalysis.hpp:826
bool operator==(const Quantity< T, U, OtherRatio > &other) const
Equality operator overload, value will be convered to same ratio before comparison.
Definition: DimensionalAnalysis.hpp:507
std::ratio_multiply< ratio_en_peck, std::ratio< 4 > > ratio_en_bushel
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1022
std::ratio_divide< ratio_jin, std::ratio< 10 > > ratio_liang
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:831
std::ratio_multiply< std::ratio< 5506104713575ll, 10000000000000ll >, std::milli > ratio_us_dry_pint
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1085
std::ratio_multiply< ratio_en_cup, std::ratio< 2 > > ratio_en_pint
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1002
void set_value(T value)
Set underlying value of the quantity.
Definition: DimensionalAnalysis.hpp:445
bool operator>(const Quantity< T, U, OtherRatio > &other) const
Larger than operator overload, value will be convered to same ratio before comparison.
Definition: DimensionalAnalysis.hpp:551
Quantity< T, UnitPow< U, factor >, std::ratio< 1 > > pow(const Quantity< T, U, Ratio > &x)
Power calculation, performed both on value and unit, ratio will be casted to std::ratio<1>.
Definition: DimensionalAnalysis.hpp:669
std::ratio< 45359237, 1000000 > ratio_short_hundredweight
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:934
std::ratio_multiply< ratio_en_pint, std::ratio< 2 > > ratio_en_quart
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1007
std::ratio_divide< ratio_us_fluid_ounce, std::ratio< 2 > > ratio_us_tablespoons
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1055
std::ratio_multiply< ratio_pound, std::ratio< 28 > > ratio_en_quarter
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:972
std::ratio_divide< ratio_cun, std::ratio< 10 > > ratio_length_fen
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:781
Quantity< T, U, Ratio > & operator=(const Quantity< T, U, OtherRatio > &other)
Assisgnment operator overload, assign value from same type but different ratio, operand value will be...
Definition: DimensionalAnalysis.hpp:496
Ratio ratio_type
Ratio type for this quantity struct.
Definition: DimensionalAnalysis.hpp:403
std::ratio_multiply< ratio_us_dry_peck, std::ratio< 4 > > ratio_us_bushel
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1105
Quantity< T, U, NewRatio > quantity_cast(Quantity< T, U, Ratio > x)
Cast a quantity to another ratio, value will be converted too. Sample code for convert to standard va...
Definition: DimensionalAnalysis.hpp:715
std::ratio_divide< ratio_mile, std::ratio< 8 > > ratio_furlong
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:879
std::ratio_divide< ratio_zhang, std::ratio< 2 > > ratio_xun
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:766
std::ratio_multiply< ratio_us_dry_quart, std::ratio< 4 > > ratio_us_dry_gallon
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1095
std::ratio_multiply< ratio_us_dry_gallon, std::ratio< 2 > > ratio_us_dry_peck
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1100
std::ratio< 200000, 3 > ratio_qing
Ratio to convert to suqaremeter. .
Definition: DimensionalAnalysis.hpp:806
std::ratio_divide< ratio_yard, std::ratio< 16 > > ratio_nail
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:894
std::ratio_divide< ratio_furlong, std::ratio< 10 > > ratio_chain
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:884
std::ratio_multiply< ratio_pound, std::ratio< 14 > > ratio_en_stone
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:977
bool operator<(const Quantity< T, U, OtherRatio > &other) const
Less than operator overload, value will be convered to same ratio before comparison.
Definition: DimensionalAnalysis.hpp:529
std::ratio_multiply< std::ratio< 35516328125ll, 10000000000ll >, std::micro > ratio_en_fluid_dram
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:982
Quantity< T, UnitRoot< U, factor >, std::ratio< 1 > > root(const Quantity< T, U, Ratio > &x)
Root calculation, performed both on value and unit, ratio will be casted to std::ratio<1>.
Definition: DimensionalAnalysis.hpp:692
Quantity< T, U, Ratio > & operator+=(const Quantity< T, U, OtherRatio > &other)
Add & assignment operator overload, add value from same type with maybe different ratio,...
Definition: DimensionalAnalysis.hpp:474
std::ratio_divide< ratio_length_hao, std::ratio< 10 > > ratio_length_si
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:796
std::ratio_divide< ratio_length_si, std::ratio< 10 > > ratio_length_hu
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:801
std::ratio_divide< ratio_liang, std::ratio< 10 > > ratio_qian
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:836
std::ratio_divide< ratio_mass_si, std::ratio< 10 > > ratio_mass_hu
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:861
bool operator<=(const Quantity< T, U, OtherRatio > &other) const
Less or equal operator overload, value will be convered to same ratio before comparison.
Definition: DimensionalAnalysis.hpp:540
std::ratio_multiply< ratio_en_gill, std::ratio< 2 > > ratio_en_cup
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:997
std::ratio_divide< ratio_PI, std::ratio< 180 > > ratio_degree
Ratio to convert degree into radian, using equation .
Definition: DimensionalAnalysis.hpp:738
std::ratio_multiply< ratio_en_fluid_ounce, std::ratio< 5 > > ratio_en_gill
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:992
Quantity(const Quantity< T, U, OtherRatio > &other)
Copy constructor from same quantity type with different ratio.
Definition: DimensionalAnalysis.hpp:427
std::ratio_multiply< std::ratio< 1609344ll, 1000000ll >, std::kilo > ratio_mile
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:874
std::ratio< 45359237, 100000000 > ratio_pound
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:939
U unit_type
Unit type for this quantity struct.
Definition: DimensionalAnalysis.hpp:401
T value() const
Get underlying value of the quantity, value represented with current unit and ratio will be returned.
Definition: DimensionalAnalysis.hpp:437
std::ratio< 10160469088, 10000000 > ratio_longton
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:919
std::ratio_multiply< std::ratio< 6479891, 100000ll >, std::micro > ratio_grain
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:954
std::ratio_divide< ratio_pica, std::ratio< 12 > > ratio_point
Ratio to convert to meter, with symbol 'pt'. .
Definition: DimensionalAnalysis.hpp:914
std::ratio_divide< ratio_mass_hao, std::ratio< 10 > > ratio_mass_si
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:856
std::ratio< 50 > ratio_dan
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:821
T standard_value() const
Get standard value of the quantity, Ratio is reverted to std::ratio<1>.
Definition: DimensionalAnalysis.hpp:453
std::ratio_multiply< ratio_us_fluid_ounce, std::ratio< 4 > > ratio_us_gill
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1060
std::ratio_multiply< ratio_us_dry_pint, std::ratio< 2 > > ratio_us_dry_quart
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1090
void set_standard_value(T value)
Get standard value of the quantity, Ratio is reverted to std::ratio<1>.
Definition: DimensionalAnalysis.hpp:461
std::ratio_divide< ratio_yin, std::ratio< 10 > > ratio_zhang
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:761
std::ratio_multiply< std::ratio< 36966911953125ll, 10000000000000ll >, std::micro > ratio_us_fluid_dram
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1040
std::ratio< 500, 1 > ratio_length_li
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:751
Quantity< T, UnitMultiply< Unit1, Unit2 >, Ratio1 > operator*(Quantity< T, Unit1, Ratio1 > lhs, Quantity< T, Unit2, Ratio2 > rhs)
Multiply operator overload, values will be converted to same ratio before calculation,...
Definition: DimensionalAnalysis.hpp:626
std::ratio_multiply< ratio_us_fluid_dram, std::ratio< 8 > > ratio_us_fluid_ounce
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1045
std::ratio_divide< ratio_length_fen, std::ratio< 10 > > ratio_length_li2
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:786
std::ratio_divide< ratio_qian, std::ratio< 10 > > ratio_mass_fen
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:841
std::ratio< 2000, 3 > ratio_mu
Ratio to convert to suqaremeter. .
Definition: DimensionalAnalysis.hpp:811
std::ratio< 80813362, 25723692 > ratio_PI
Ratio to display π in approximate fraction, with high presion up to .
Definition: DimensionalAnalysis.hpp:733
std::ratio_divide< ratio_mu, std::ratio< 240 > > ratio_gong
Ratio to convert to suqaremeter. .
Definition: DimensionalAnalysis.hpp:816
std::ratio_divide< ratio_chi, std::ratio< 10 > > ratio_cun
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:776
Quantity< T, U, Ratio > & operator=(const Quantity< T, U, Ratio > &other)
Assisgnment operator overload.
Definition: DimensionalAnalysis.hpp:483
ratio_long_hundredweight ratio_en_hundredweight
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:967
std::ratio< 5080234544, 100000000 > ratio_long_hundredweight
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:929
std::ratio_divide< ratio_zhang, std::ratio< 10 > > ratio_chi
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:771
bool operator!=(const Quantity< T, U, OtherRatio > &other) const
Inequality operator overload, value will be convered to same ratio before comparison.
Definition: DimensionalAnalysis.hpp:518
std::ratio_divide< ratio_us_fluid_ounce, std::ratio< 6 > > ratio_us_teaspoons
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1050
Quantity< T, UnitDivide< Unit1, Unit2 >, Ratio1 > operator/(Quantity< T, Unit1, Ratio1 > lhs, Quantity< T, Unit2, Ratio2 > rhs)
Divide operator overload, values will be converted to same ratio before calculation,...
Definition: DimensionalAnalysis.hpp:649
std::ratio_divide< ratio_length_li2, std::ratio< 10 > > ratio_length_hao
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:791
std::ratio_multiply< ratio_en_gallon, std::ratio< 2 > > ratio_en_peck
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1017
std::ratio_divide< ratio_pound, std::ratio< 16 > > ratio_ounce
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:944
std::ratio_multiply< ratio_us_pint, std::ratio< 2 > > ratio_us_quart
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1075
std::ratio_multiply< ratio_us_gill, std::ratio< 2 > > ratio_us_cup
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1065
std::ratio_divide< ratio_length_li, std::ratio< 15 > > ratio_yin
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:756
std::ratio_divide< ratio_chain, std::ratio< 22 > > ratio_yard
Ratio to convert to meter. .
Definition: DimensionalAnalysis.hpp:889
std::ratio_divide< ratio_ounce, std::ratio< 16 > > ratio_drachm
Ratio to convert to kilogram. .
Definition: DimensionalAnalysis.hpp:949
std::ratio_multiply< ratio_us_cup, std::ratio< 2 > > ratio_us_pint
Ratio to convert to cubicmeter. .
Definition: DimensionalAnalysis.hpp:1070
Namespace for all classes, typedefs and functions of dimensional analyse. See Dimensional Analysis fo...
Quantity< T, U, NewRatio > quantity_cast(Quantity< T, U, Ratio > x)
The Unit struct is used to describe physical units.
Definition: DimensionalAnalysis.hpp:88
Unit< 0, 1, 0, 0, 0, 0, 0 > Mass
Mass unit, called kilogram, with symbol kg.
Definition: DimensionalAnalysis.hpp:227
UnitDivide< Speed, Time > Acceleration
Acceleration unit, derived from .
Definition: DimensionalAnalysis.hpp:263
UnitDivide< Length, Time > Speed
Speed unit, derived from .
Definition: DimensionalAnalysis.hpp:259
UnitDivide< MagneticFlux, Area > MagnetFluxDensity
Magnet flux density unit, called tesla, with symbol T, derived from or .
Definition: DimensionalAnalysis.hpp:334
static constexpr int factorMass
Power factor of length mass unit.
Definition: DimensionalAnalysis.hpp:103
static constexpr int factorCurrent
Power factor of length current unit.
Definition: DimensionalAnalysis.hpp:107
UnitMultiply< Area, Length > Volume
Volume unit, with symbol .
Definition: DimensionalAnalysis.hpp:283
UnitMultiply< Force, Length > Energy
Enegy unit, called joule, with symbol J, derived from or .
Definition: DimensionalAnalysis.hpp:293
UnitDivide< Energy, Mass > EquivalentDose
Equivalent dose unit of ionising radiation, called sievert, with symbol Sv, derived from or .
Definition: DimensionalAnalysis.hpp:364
UnitDivide< Energy, Mass > AbsorbedDose
Absorbed dose unit of ionising radiation, called gray, with symbol Gy, derived from or .
Definition: DimensionalAnalysis.hpp:359
UnitDivide< MagneticFlux, Current > Inductance
Electric unit, called henry, with symbol H, derived from or .
Definition: DimensionalAnalysis.hpp:339
static constexpr int factorLength
Power factor of length unit.
Definition: DimensionalAnalysis.hpp:101
UnitDivide< AmountOfSubstance, Time > CatalyticActivity
Catalytic activity unit called katal, with symbol kat, derived from .
Definition: DimensionalAnalysis.hpp:369
Unit< 0, 0, 0, 0, 0, 0, 1 > LuminousIntensity
Luminous intensity unit, called candela, with symbol cd.
Definition: DimensionalAnalysis.hpp:247
static constexpr int factorTemperature
Power factor of length temperature unit.
Definition: DimensionalAnalysis.hpp:109
UnitDivide< Energy, Time > Power
Power unit, called watt, with symbol W, derived from or .
Definition: DimensionalAnalysis.hpp:298
UnitDivide< Charge, Voltage > ElelctricCapacitance
Elelctric capacitance unit, called farad, with symbol F, derived from or .
Definition: DimensionalAnalysis.hpp:313
LuminousIntensity Luminous
Luminous flux unit, called lumen, with symbol lm, derived from .
Definition: DimensionalAnalysis.hpp:344
UnitMultiply< Time, Current > Charge
Charge unit, called coulomb, with symbol C, derived from .
Definition: DimensionalAnalysis.hpp:303
UnitMultiply< Mass, Acceleration > Force
Force unit, called newton, with symbol N, derived from .
Definition: DimensionalAnalysis.hpp:275
Unit< 0, 0, 0, 0, 1, 0, 0 > Temperature
Thermodynamic temperature unit, called kelvin, with symbol K.
Definition: DimensionalAnalysis.hpp:239
UnitDivide< LuminousIntensity, Area > Illuminance
Illuminance unit, called lux, with symbol ls, derived from or .
Definition: DimensionalAnalysis.hpp:349
UnitDivide< Force, Area > Pressure
Pressure unit, called pascal, with symbol Pa, derived from or .
Definition: DimensionalAnalysis.hpp:288
UnitDivide< Scala, Time > Frenquency
Frequence unit, called hertz, with symbol Hz, derived from .
Definition: DimensionalAnalysis.hpp:268
UnitDivide< Scala, ElectricResistance > ElelctricConductance
Electric conductance unit, called simens, with symbol S, derived from or .
Definition: DimensionalAnalysis.hpp:324
static constexpr std::tuple< int, int, int, int, int, int, int > factors
Power factors of 7 base units.
Definition: DimensionalAnalysis.hpp:93
Unit< 0, 0, 1, 0, 0, 0, 0 > Time
Time unit, called second, with symbol s.
Definition: DimensionalAnalysis.hpp:231
Unit< 0, 0, 0, 0, 0, 0, 0 > Scala
The scala type of non-unit.
Definition: DimensionalAnalysis.hpp:219
UnitMultiply< Voltage, Time > MagneticFlux
Magnetic flux unit, called webber, with symbol Wb**, derived from or .
Definition: DimensionalAnalysis.hpp:329
Unit< 0, 0, 0, 1, 0, 0, 0 > Current
Electric current unit, called ampere, with symbol A.
Definition: DimensionalAnalysis.hpp:235
UnitDivide< Scala, Time > Radioactivity
Radioactivity unit of decays per second, called becquerel, with symbol Bq derived from .
Definition: DimensionalAnalysis.hpp:354
UnitDivide< Power, Current > Voltage
Voltage unit, called volt, with symbol V, derived from or .
Definition: DimensionalAnalysis.hpp:308
static constexpr int factorLuminousIntensity
Power factor of luminous_intensity unit unit.
Definition: DimensionalAnalysis.hpp:113
UnitDivide< Voltage, Current > ElectricResistance
Electric resistance unit, called ohm, with symbol Ω, derived from or .
Definition: DimensionalAnalysis.hpp:318
static constexpr int factorTime
Power factor of length time unit.
Definition: DimensionalAnalysis.hpp:105
UnitMultiply< Length, Length > Area
Area unit, with symbol .
Definition: DimensionalAnalysis.hpp:279
Unit< 0, 0, 0, 0, 0, 1, 0 > AmountOfSubstance
Amount of substance unit, called mole, with symbol mol.
Definition: DimensionalAnalysis.hpp:243
static constexpr int factorAmountOfSubstance
Power factor of amount_of_substance unit unit.
Definition: DimensionalAnalysis.hpp:111
Unit< 1, 0, 0, 0, 0, 0, 0 > Length
Length unit, called meter, with symbol m.
Definition: DimensionalAnalysis.hpp:223