From 6f8bddc8324a3c385a49aa02d0ea26cc5488cba1 Mon Sep 17 00:00:00 2001 From: Ramzi Sabra Date: Fri, 17 Apr 2020 06:20:13 +0300 Subject: [PATCH] added more prefixed SI units; added alias_unit and prefixed_alias_unit types --- src/include/units/physical/si/absorbed_dose.h | 90 ++++++++ src/include/units/physical/si/area.h | 90 +++++++- src/include/units/physical/si/capacitance.h | 103 ++++++++- .../units/physical/si/catalytic_activity.h | 95 +++++++++ src/include/units/physical/si/conductance.h | 81 ++++++- src/include/units/physical/si/energy.h | 60 ++++++ src/include/units/physical/si/force.h | 100 +++++++++ src/include/units/physical/si/frequency.h | 55 +++++ src/include/units/physical/si/inductance.h | 84 ++++++-- src/include/units/physical/si/length.h | 72 ++++++- .../units/physical/si/luminous_intensity.h | 100 +++++++++ src/include/units/physical/si/magnetic_flux.h | 84 ++++++-- .../units/physical/si/magnetic_induction.h | 84 ++++++-- src/include/units/physical/si/mass.h | 198 +++++++++++++++++- src/include/units/physical/si/power.h | 60 ++++++ src/include/units/physical/si/pressure.h | 100 +++++++++ src/include/units/physical/si/resistance.h | 65 ++++++ src/include/units/physical/si/time.h | 25 +++ src/include/units/physical/si/voltage.h | 102 ++++++++- src/include/units/physical/si/volume.h | 194 ++++++++++++++++- src/include/units/unit.h | 21 ++ test/unit_test/runtime/fmt_test.cpp | 3 +- test/unit_test/static/si_test.cpp | 7 + 23 files changed, 1797 insertions(+), 76 deletions(-) diff --git a/src/include/units/physical/si/absorbed_dose.h b/src/include/units/physical/si/absorbed_dose.h index 5ee5b719..73fe7d50 100644 --- a/src/include/units/physical/si/absorbed_dose.h +++ b/src/include/units/physical/si/absorbed_dose.h @@ -31,8 +31,26 @@ namespace units::si { struct gray : named_unit {}; +struct yoctogray : prefixed_unit {}; +struct zeptogray : prefixed_unit {}; +struct attogray : prefixed_unit {}; +struct femtogray : prefixed_unit {}; +struct picogray : prefixed_unit {}; +struct nanogray : prefixed_unit {}; +struct microgray : prefixed_unit {}; struct milligray : prefixed_unit {}; +struct centigray : prefixed_unit {}; +struct decigray : prefixed_unit {}; +struct decagray : prefixed_unit {}; +struct hectogray : prefixed_unit {}; struct kilogray : prefixed_unit {}; +struct megagray : prefixed_unit {}; +struct gigagray : prefixed_unit {}; +struct teragray : prefixed_unit {}; +struct petagray : prefixed_unit {}; +struct exagray : prefixed_unit {}; +struct zettagray : prefixed_unit {}; +struct yottagray : prefixed_unit {}; struct dim_absorbed_dose : physical::dim_absorbed_dose {}; @@ -45,14 +63,86 @@ inline namespace literals { constexpr auto operator"" q_Gy(unsigned long long l) { return absorbed_dose(l); } constexpr auto operator"" q_Gy(long double l) { return absorbed_dose(l); } +// yGy +constexpr auto operator"" q_yGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_yGy(long double l) { return absorbed_dose(l); } + +// zGy +constexpr auto operator"" q_zGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_zGy(long double l) { return absorbed_dose(l); } + +// aGy +constexpr auto operator"" q_aGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_aGy(long double l) { return absorbed_dose(l); } + +// fGy +constexpr auto operator"" q_fGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_fGy(long double l) { return absorbed_dose(l); } + +// pGy +constexpr auto operator"" q_pGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_pGy(long double l) { return absorbed_dose(l); } + +// nGy +constexpr auto operator"" q_nGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_nGy(long double l) { return absorbed_dose(l); } + +// uGy +constexpr auto operator"" q_uGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_uGy(long double l) { return absorbed_dose(l); } + // mGy constexpr auto operator"" q_mGy(unsigned long long l) { return absorbed_dose(l); } constexpr auto operator"" q_mGy(long double l) { return absorbed_dose(l); } +// cGy +constexpr auto operator"" q_cGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_cGy(long double l) { return absorbed_dose(l); } + +// dGy +constexpr auto operator"" q_dGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_dGy(long double l) { return absorbed_dose(l); } + +// daGy +constexpr auto operator"" q_daGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_daGy(long double l) { return absorbed_dose(l); } + +// hGy +constexpr auto operator"" q_hGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_hGy(long double l) { return absorbed_dose(l); } + // kGy constexpr auto operator"" q_kGy(unsigned long long l) { return absorbed_dose(l); } constexpr auto operator"" q_kGy(long double l) { return absorbed_dose(l); } +// MGy +constexpr auto operator"" q_MGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_MGy(long double l) { return absorbed_dose(l); } + +// GGy +constexpr auto operator"" q_GGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_GGy(long double l) { return absorbed_dose(l); } + +// TGy +constexpr auto operator"" q_TGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_TGy(long double l) { return absorbed_dose(l); } + +// PGy +constexpr auto operator"" q_PGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_PGy(long double l) { return absorbed_dose(l); } + +// EGy +constexpr auto operator"" q_EGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_EGy(long double l) { return absorbed_dose(l); } + +// ZGy +constexpr auto operator"" q_ZGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_ZGy(long double l) { return absorbed_dose(l); } + +// YGy +constexpr auto operator"" q_YGy(unsigned long long l) { return absorbed_dose(l); } +constexpr auto operator"" q_YGy(long double l) { return absorbed_dose(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/area.h b/src/include/units/physical/si/area.h index 3f01ce08..6ff4938b 100644 --- a/src/include/units/physical/si/area.h +++ b/src/include/units/physical/si/area.h @@ -31,12 +31,28 @@ namespace units::si { struct square_metre : unit {}; struct dim_area : physical::dim_area {}; +struct square_yoctometre : deduced_unit {}; +struct square_zeptometre : deduced_unit {}; +struct square_attometre : deduced_unit {}; +struct square_femtometre : deduced_unit {}; +struct square_picometre : deduced_unit {}; +struct square_nanometre : deduced_unit {}; +struct square_micrometre : deduced_unit {}; struct square_millimetre : deduced_unit {}; struct square_centimetre : deduced_unit {}; -struct square_femtometre : deduced_unit {}; +struct square_decimetre : deduced_unit {}; +struct square_decametre : deduced_unit {}; +struct square_hectometre : deduced_unit {}; struct square_kilometre : deduced_unit {}; +struct square_megametre : deduced_unit {}; +struct square_gigametre : deduced_unit {}; +struct square_terametre : deduced_unit {}; +struct square_petametre : deduced_unit {}; +struct square_exametre : deduced_unit {}; +struct square_zettametre : deduced_unit {}; +struct square_yottametre : deduced_unit {}; -struct hectare : deduced_unit {}; +using hectare = square_hectometre; template using area = quantity; @@ -47,6 +63,34 @@ inline namespace literals { constexpr auto operator"" q_m2(unsigned long long l) { return area(l); } constexpr auto operator"" q_m2(long double l) { return area(l); } +// ym2 +constexpr auto operator"" q_ym2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_ym2(long double l) { return area(l); } + +// zm2 +constexpr auto operator"" q_zm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_zm2(long double l) { return area(l); } + +// am2 +constexpr auto operator"" q_am2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_am2(long double l) { return area(l); } + +// fm2 +constexpr auto operator"" q_fm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_fm2(long double l) { return area(l); } + +// pm2 +constexpr auto operator"" q_pm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_pm2(long double l) { return area(l); } + +// nm2 +constexpr auto operator"" q_nm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_nm2(long double l) { return area(l); } + +// um2 +constexpr auto operator"" q_um2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_um2(long double l) { return area(l); } + // mm2 constexpr auto operator"" q_mm2(unsigned long long l) { return area(l); } constexpr auto operator"" q_mm2(long double l) { return area(l); } @@ -55,14 +99,50 @@ constexpr auto operator"" q_mm2(long double l) { return area(l); } constexpr auto operator"" q_cm2(long double l) { return area(l); } -// fm2 -constexpr auto operator"" q_fm2(unsigned long long l) { return area(l); } -constexpr auto operator"" q_fm2(long double l) { return area(l); } +// dm2 +constexpr auto operator"" q_dm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_dm2(long double l) { return area(l); } + +// dam2 +constexpr auto operator"" q_dam2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_dam2(long double l) { return area(l); } + +// hm2 +constexpr auto operator"" q_hm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_hm2(long double l) { return area(l); } // km2 constexpr auto operator"" q_km2(unsigned long long l) { return area(l); } constexpr auto operator"" q_km2(long double l) { return area(l); } +// Mm2 +constexpr auto operator"" q_Mm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_Mm2(long double l) { return area(l); } + +// Gm2 +constexpr auto operator"" q_Gm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_Gm2(long double l) { return area(l); } + +// Tm2 +constexpr auto operator"" q_Tm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_Tm2(long double l) { return area(l); } + +// Pm2 +constexpr auto operator"" q_Pm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_Pm2(long double l) { return area(l); } + +// Em2 +constexpr auto operator"" q_Em2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_Em2(long double l) { return area(l); } + +// Zm2 +constexpr auto operator"" q_Zm2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_Zm2(long double l) { return area(l); } + +// Ym2 +constexpr auto operator"" q_Ym2(unsigned long long l) { return area(l); } +constexpr auto operator"" q_Ym2(long double l) { return area(l); } + // ha constexpr auto operator"" q_ha(unsigned long long l) { return area(l); } constexpr auto operator"" q_ha(long double l) { return area(l); } diff --git a/src/include/units/physical/si/capacitance.h b/src/include/units/physical/si/capacitance.h index 528e9056..f9772f57 100644 --- a/src/include/units/physical/si/capacitance.h +++ b/src/include/units/physical/si/capacitance.h @@ -31,11 +31,26 @@ namespace units::si { struct farad : named_unit {}; - -struct millifarad : prefixed_unit {}; -struct microfarad : prefixed_unit {}; -struct nanofarad : prefixed_unit {}; +struct yoctofarad : prefixed_unit {}; +struct zeptofarad : prefixed_unit {}; +struct attofarad : prefixed_unit {}; +struct femtofarad : prefixed_unit {}; struct picofarad : prefixed_unit {}; +struct nanofarad : prefixed_unit {}; +struct microfarad : prefixed_unit {}; +struct millifarad : prefixed_unit {}; +struct centifarad : prefixed_unit {}; +struct decifarad : prefixed_unit {}; +struct decafarad : prefixed_unit {}; +struct hectofarad : prefixed_unit {}; +struct kilofarad : prefixed_unit {}; +struct megafarad : prefixed_unit {}; +struct gigafarad : prefixed_unit {}; +struct terafarad : prefixed_unit {}; +struct petafarad : prefixed_unit {}; +struct exafarad : prefixed_unit {}; +struct zettafarad : prefixed_unit {}; +struct yottafarad : prefixed_unit {}; struct dim_capacitance : physical::dim_capacitance {}; @@ -48,17 +63,85 @@ inline namespace literals { constexpr auto operator"" q_F(unsigned long long l) { return capacitance(l); } constexpr auto operator"" q_F(long double l) { return capacitance(l); } -constexpr auto operator"" q_mF(unsigned long long l) { return capacitance(l); } -constexpr auto operator"" q_mF(long double l) { return capacitance(l); } +// yF +constexpr auto operator"" q_yF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_yF(long double l) { return capacitance(l); } -constexpr auto operator"" q_uF(unsigned long long l) { return capacitance(l); } -constexpr auto operator"" q_uF(long double l) { return capacitance(l); } +// zF +constexpr auto operator"" q_zF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_zF(long double l) { return capacitance(l); } +// aF +constexpr auto operator"" q_aF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_aF(long double l) { return capacitance(l); } + +// fF +constexpr auto operator"" q_fF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_fF(long double l) { return capacitance(l); } + +// pF +constexpr auto operator"" q_pF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_pF(long double l) { return capacitance(l); } + +// nF constexpr auto operator"" q_nF(unsigned long long l) { return capacitance(l); } constexpr auto operator"" q_nF(long double l) { return capacitance(l); } -constexpr auto operator"" q_pF(unsigned long long l) { return capacitance(l); } -constexpr auto operator"" q_pF(long double l) { return capacitance(l); } +// uF +constexpr auto operator"" q_uF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_uF(long double l) { return capacitance(l); } + +// mF +constexpr auto operator"" q_mF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_mF(long double l) { return capacitance(l); } + +// cF +constexpr auto operator"" q_cF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_cF(long double l) { return capacitance(l); } + +// dF +constexpr auto operator"" q_dF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_dF(long double l) { return capacitance(l); } + +// daF +constexpr auto operator"" q_daF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_daF(long double l) { return capacitance(l); } + +// hF +constexpr auto operator"" q_hF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_hF(long double l) { return capacitance(l); } + +// kF +constexpr auto operator"" q_kF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_kF(long double l) { return capacitance(l); } + +// MF +constexpr auto operator"" q_MF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_MF(long double l) { return capacitance(l); } + +// GF +constexpr auto operator"" q_GF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_GF(long double l) { return capacitance(l); } + +// TF +constexpr auto operator"" q_TF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_TF(long double l) { return capacitance(l); } + +// PF +constexpr auto operator"" q_PF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_PF(long double l) { return capacitance(l); } + +// EF +constexpr auto operator"" q_EF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_EF(long double l) { return capacitance(l); } + +// ZF +constexpr auto operator"" q_ZF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_ZF(long double l) { return capacitance(l); } + +// YF +constexpr auto operator"" q_YF(unsigned long long l) { return capacitance(l); } +constexpr auto operator"" q_YF(long double l) { return capacitance(l); } } // namespace literals diff --git a/src/include/units/physical/si/catalytic_activity.h b/src/include/units/physical/si/catalytic_activity.h index 8e7f2fc9..e1910e16 100644 --- a/src/include/units/physical/si/catalytic_activity.h +++ b/src/include/units/physical/si/catalytic_activity.h @@ -31,7 +31,26 @@ namespace units::si { struct katal : named_unit {}; +struct yoctokatal : prefixed_unit {}; +struct zeptokatal : prefixed_unit {}; +struct attokatal : prefixed_unit {}; +struct femtokatal : prefixed_unit {}; +struct picokatal : prefixed_unit {}; struct nanokatal : prefixed_unit {}; +struct microkatal : prefixed_unit {}; +struct millikatal : prefixed_unit {}; +struct centikatal : prefixed_unit {}; +struct decikatal : prefixed_unit {}; +struct decakatal : prefixed_unit {}; +struct hectokatal : prefixed_unit {}; +struct kilokatal : prefixed_unit {}; +struct megakatal : prefixed_unit {}; +struct gigakatal : prefixed_unit {}; +struct terakatal : prefixed_unit {}; +struct petakatal : prefixed_unit {}; +struct exakatal : prefixed_unit {}; +struct zettakatal : prefixed_unit {}; +struct yottakatal : prefixed_unit {}; struct enzyme_unit : named_scaled_unit, katal> {}; @@ -46,10 +65,86 @@ inline namespace literals { constexpr auto operator"" q_kat(unsigned long long l) { return catalytic_activity(l); } constexpr auto operator"" q_kat(long double l) { return catalytic_activity(l); } +// ykat +constexpr auto operator"" q_ykat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_ykat(long double l) { return catalytic_activity(l); } + +// zkat +constexpr auto operator"" q_zkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_zkat(long double l) { return catalytic_activity(l); } + +// akat +constexpr auto operator"" q_akat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_akat(long double l) { return catalytic_activity(l); } + +// fkat +constexpr auto operator"" q_fkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_fkat(long double l) { return catalytic_activity(l); } + +// pkat +constexpr auto operator"" q_pkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_pkat(long double l) { return catalytic_activity(l); } + // nkat constexpr auto operator"" q_nkat(unsigned long long l) { return catalytic_activity(l); } constexpr auto operator"" q_nkat(long double l) { return catalytic_activity(l); } +// ukat +constexpr auto operator"" q_ukat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_ukat(long double l) { return catalytic_activity(l); } + +// mkat +constexpr auto operator"" q_mkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_mkat(long double l) { return catalytic_activity(l); } + +// ckat +constexpr auto operator"" q_ckat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_ckat(long double l) { return catalytic_activity(l); } + +// dkat +constexpr auto operator"" q_dkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_dkat(long double l) { return catalytic_activity(l); } + +// dakat +constexpr auto operator"" q_dakat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_dakat(long double l) { return catalytic_activity(l); } + +// hkat +constexpr auto operator"" q_hkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_hkat(long double l) { return catalytic_activity(l); } + +// kkat +constexpr auto operator"" q_kkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_kkat(long double l) { return catalytic_activity(l); } + +// Mkat +constexpr auto operator"" q_Mkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_Mkat(long double l) { return catalytic_activity(l); } + +// Gkat +constexpr auto operator"" q_Gkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_Gkat(long double l) { return catalytic_activity(l); } + +// Tkat +constexpr auto operator"" q_Tkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_Tkat(long double l) { return catalytic_activity(l); } + +// Pkat +constexpr auto operator"" q_Pkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_Pkat(long double l) { return catalytic_activity(l); } + +// Ekat +constexpr auto operator"" q_Ekat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_Ekat(long double l) { return catalytic_activity(l); } + +// Zkat +constexpr auto operator"" q_Zkat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_Zkat(long double l) { return catalytic_activity(l); } + +// Ykat +constexpr auto operator"" q_Ykat(unsigned long long l) { return catalytic_activity(l); } +constexpr auto operator"" q_Ykat(long double l) { return catalytic_activity(l); } + // U constexpr auto operator"" q_U(unsigned long long l) { return catalytic_activity(l); } constexpr auto operator"" q_U(long double l) { return catalytic_activity(l); } diff --git a/src/include/units/physical/si/conductance.h b/src/include/units/physical/si/conductance.h index fa79ba31..ecd21632 100644 --- a/src/include/units/physical/si/conductance.h +++ b/src/include/units/physical/si/conductance.h @@ -30,9 +30,22 @@ namespace units::si { struct siemens : named_unit {}; -struct millisiemens : prefixed_unit {}; -struct microsiemens : prefixed_unit {}; +struct yoctosiemens : prefixed_unit {}; +struct zeptosiemens : prefixed_unit {}; +struct attosiemens : prefixed_unit {}; +struct femtosiemens : prefixed_unit {}; +struct picosiemens : prefixed_unit {}; struct nanosiemens : prefixed_unit {}; +struct microsiemens : prefixed_unit {}; +struct millisiemens : prefixed_unit {}; +struct kilosiemens : prefixed_unit {}; +struct megasiemens : prefixed_unit {}; +struct gigasiemens : prefixed_unit {}; +struct terasiemens : prefixed_unit {}; +struct petasiemens : prefixed_unit {}; +struct exasiemens : prefixed_unit {}; +struct zettasiemens : prefixed_unit {}; +struct yottasiemens : prefixed_unit {}; struct dim_conductance : physical::dim_conductance {}; @@ -45,18 +58,70 @@ inline namespace literals { constexpr auto operator"" q_S(unsigned long long l) { return conductance(l); } constexpr auto operator"" q_S(long double l) { return conductance(l); } -// mS -constexpr auto operator"" q_mS(unsigned long long l) { return conductance(l); } -constexpr auto operator"" q_mS(long double l) { return conductance(l); } +// yS +constexpr auto operator"" q_yS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_yS(long double l) { return conductance(l); } -// µS -constexpr auto operator"" q_uS(unsigned long long l) { return conductance(l); } -constexpr auto operator"" q_uS(long double l) { return conductance(l); } +// zS +constexpr auto operator"" q_zS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_zS(long double l) { return conductance(l); } + +// aS +constexpr auto operator"" q_aS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_aS(long double l) { return conductance(l); } + +// fS +constexpr auto operator"" q_fS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_fS(long double l) { return conductance(l); } + +// pS +constexpr auto operator"" q_pS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_pS(long double l) { return conductance(l); } // nS constexpr auto operator"" q_nS(unsigned long long l) { return conductance(l); } constexpr auto operator"" q_nS(long double l) { return conductance(l); } +// µS +constexpr auto operator"" q_uS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_uS(long double l) { return conductance(l); } + +// mS +constexpr auto operator"" q_mS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_mS(long double l) { return conductance(l); } + +// kS +constexpr auto operator"" q_kS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_kS(long double l) { return conductance(l); } + +// MS +constexpr auto operator"" q_MS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_MS(long double l) { return conductance(l); } + +// GS +constexpr auto operator"" q_GS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_GS(long double l) { return conductance(l); } + +// TS +constexpr auto operator"" q_TS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_TS(long double l) { return conductance(l); } + +// PS +constexpr auto operator"" q_PS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_PS(long double l) { return conductance(l); } + +// ES +constexpr auto operator"" q_ES(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_ES(long double l) { return conductance(l); } + +// ZS +constexpr auto operator"" q_ZS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_ZS(long double l) { return conductance(l); } + +// YS +constexpr auto operator"" q_YS(unsigned long long l) { return conductance(l); } +constexpr auto operator"" q_YS(long double l) { return conductance(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/energy.h b/src/include/units/physical/si/energy.h index e319d439..48b4d3a2 100644 --- a/src/include/units/physical/si/energy.h +++ b/src/include/units/physical/si/energy.h @@ -30,10 +30,22 @@ namespace units::si { struct joule : named_unit {}; +struct yoctojoule : prefixed_unit {}; +struct zeptojoule : prefixed_unit {}; +struct attojoule : prefixed_unit {}; +struct femtojoule : prefixed_unit {}; +struct picojoule : prefixed_unit {}; +struct nanojoule : prefixed_unit {}; +struct microjoule : prefixed_unit {}; struct millijoule : prefixed_unit {}; struct kilojoule : prefixed_unit {}; struct megajoule : prefixed_unit {}; struct gigajoule : prefixed_unit {}; +struct terajoule : prefixed_unit {}; +struct petajoule : prefixed_unit {}; +struct exajoule : prefixed_unit {}; +struct zettajoule : prefixed_unit {}; +struct yottajoule : prefixed_unit {}; struct electronvolt : named_scaled_unit, joule> {}; struct gigaelectronvolt : prefixed_unit {}; @@ -49,6 +61,34 @@ inline namespace literals { constexpr auto operator"" q_J(unsigned long long l) { return energy(l); } constexpr auto operator"" q_J(long double l) { return energy(l); } +// yJ +constexpr auto operator"" q_yJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_yJ(long double l) { return energy(l); } + +// zJ +constexpr auto operator"" q_zJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_zJ(long double l) { return energy(l); } + +// aJ +constexpr auto operator"" q_aJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_aJ(long double l) { return energy(l); } + +// fJ +constexpr auto operator"" q_fJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_fJ(long double l) { return energy(l); } + +// pJ +constexpr auto operator"" q_pJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_pJ(long double l) { return energy(l); } + +// nJ +constexpr auto operator"" q_nJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_nJ(long double l) { return energy(l); } + +// uJ +constexpr auto operator"" q_uJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_uJ(long double l) { return energy(l); } + // mJ constexpr auto operator"" q_mJ(unsigned long long l) { return energy(l); } constexpr auto operator"" q_mJ(long double l) { return energy(l); } @@ -65,6 +105,26 @@ constexpr auto operator"" q_MJ(long double l) { return energy(l); } constexpr auto operator"" q_GJ(long double l) { return energy(l); } +// TJ +constexpr auto operator"" q_TJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_TJ(long double l) { return energy(l); } + +// PJ +constexpr auto operator"" q_PJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_PJ(long double l) { return energy(l); } + +// EJ +constexpr auto operator"" q_EJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_EJ(long double l) { return energy(l); } + +// ZJ +constexpr auto operator"" q_ZJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_ZJ(long double l) { return energy(l); } + +// YJ +constexpr auto operator"" q_YJ(unsigned long long l) { return energy(l); } +constexpr auto operator"" q_YJ(long double l) { return energy(l); } + // eV constexpr auto operator"" q_eV(unsigned long long l) { return energy(l); } constexpr auto operator"" q_eV(long double l) { return energy(l); } diff --git a/src/include/units/physical/si/force.h b/src/include/units/physical/si/force.h index 472e3a73..7c8562c3 100644 --- a/src/include/units/physical/si/force.h +++ b/src/include/units/physical/si/force.h @@ -31,6 +31,26 @@ namespace units::si { struct newton : named_unit {}; +struct yoctonewton : prefixed_unit {}; +struct zeptonewton : prefixed_unit {}; +struct attonewton : prefixed_unit {}; +struct femtonewton : prefixed_unit {}; +struct piconewton : prefixed_unit {}; +struct nanonewton : prefixed_unit {}; +struct micronewton : prefixed_unit {}; +struct millinewton : prefixed_unit {}; +struct centinewton : prefixed_unit {}; +struct decinewton : prefixed_unit {}; +struct decanewton : prefixed_unit {}; +struct hectonewton : prefixed_unit {}; +struct kilonewton : prefixed_unit {}; +struct meganewton : prefixed_unit {}; +struct giganewton : prefixed_unit {}; +struct teranewton : prefixed_unit {}; +struct petanewton : prefixed_unit {}; +struct exanewton : prefixed_unit {}; +struct zettanewton : prefixed_unit {}; +struct yottanewton : prefixed_unit {}; struct dim_force : physical::dim_force {}; @@ -43,6 +63,86 @@ inline namespace literals { constexpr auto operator"" q_N(unsigned long long l) { return force(l); } constexpr auto operator"" q_N(long double l) { return force(l); } +// yN +constexpr auto operator"" q_yN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_yN(long double l) { return force(l); } + +// zN +constexpr auto operator"" q_zN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_zN(long double l) { return force(l); } + +// aN +constexpr auto operator"" q_aN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_aN(long double l) { return force(l); } + +// fN +constexpr auto operator"" q_fN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_fN(long double l) { return force(l); } + +// pN +constexpr auto operator"" q_pN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_pN(long double l) { return force(l); } + +// nN +constexpr auto operator"" q_nN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_nN(long double l) { return force(l); } + +// uN +constexpr auto operator"" q_uN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_uN(long double l) { return force(l); } + +// mN +constexpr auto operator"" q_mN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_mN(long double l) { return force(l); } + +// cN +constexpr auto operator"" q_cN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_cN(long double l) { return force(l); } + +// dN +constexpr auto operator"" q_dN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_dN(long double l) { return force(l); } + +// daN +constexpr auto operator"" q_daN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_daN(long double l) { return force(l); } + +// hN +constexpr auto operator"" q_hN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_hN(long double l) { return force(l); } + +// kN +constexpr auto operator"" q_kN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_kN(long double l) { return force(l); } + +// MN +constexpr auto operator"" q_MN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_MN(long double l) { return force(l); } + +// GN +constexpr auto operator"" q_GN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_GN(long double l) { return force(l); } + +// TN +constexpr auto operator"" q_TN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_TN(long double l) { return force(l); } + +// PN +constexpr auto operator"" q_PN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_PN(long double l) { return force(l); } + +// EN +constexpr auto operator"" q_EN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_EN(long double l) { return force(l); } + +// ZN +constexpr auto operator"" q_ZN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_ZN(long double l) { return force(l); } + +// YN +constexpr auto operator"" q_YN(unsigned long long l) { return force(l); } +constexpr auto operator"" q_YN(long double l) { return force(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/frequency.h b/src/include/units/physical/si/frequency.h index 9c1ef10e..70e08160 100644 --- a/src/include/units/physical/si/frequency.h +++ b/src/include/units/physical/si/frequency.h @@ -29,11 +29,22 @@ namespace units::si { struct hertz : named_unit {}; +struct yoctohertz : prefixed_unit {}; +struct zeptohertz : prefixed_unit {}; +struct attohertz : prefixed_unit {}; +struct femtohertz : prefixed_unit {}; +struct picohertz : prefixed_unit {}; +struct nanohertz : prefixed_unit {}; +struct microhertz : prefixed_unit {}; struct millihertz : prefixed_unit {}; struct kilohertz : prefixed_unit {}; struct megahertz : prefixed_unit {}; struct gigahertz : prefixed_unit {}; struct terahertz : prefixed_unit {}; +struct petahertz : prefixed_unit {}; +struct exahertz : prefixed_unit {}; +struct zettahertz : prefixed_unit {}; +struct yottahertz : prefixed_unit {}; struct dim_frequency : physical::dim_frequency {}; @@ -46,6 +57,34 @@ inline namespace literals { constexpr auto operator"" q_Hz(unsigned long long l) { return frequency(l); } constexpr auto operator"" q_Hz(long double l) { return frequency(l); } +// yHz +constexpr auto operator"" q_yHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_yHz(long double l) { return frequency(l); } + +// zHz +constexpr auto operator"" q_zHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_zHz(long double l) { return frequency(l); } + +// aHz +constexpr auto operator"" q_aHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_aHz(long double l) { return frequency(l); } + +// fHz +constexpr auto operator"" q_fHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_fHz(long double l) { return frequency(l); } + +// pHz +constexpr auto operator"" q_pHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_pHz(long double l) { return frequency(l); } + +// nHz +constexpr auto operator"" q_nHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_nHz(long double l) { return frequency(l); } + +// uHz +constexpr auto operator"" q_uHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_uHz(long double l) { return frequency(l); } + // mHz constexpr auto operator"" q_mHz(unsigned long long l) { return frequency(l); } constexpr auto operator"" q_mHz(long double l) { return frequency(l); } @@ -66,6 +105,22 @@ constexpr auto operator"" q_GHz(long double l) { return frequency(l); } constexpr auto operator"" q_THz(long double l) { return frequency(l); } +// PHz +constexpr auto operator"" q_PHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_PHz(long double l) { return frequency(l); } + +// EHz +constexpr auto operator"" q_EHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_EHz(long double l) { return frequency(l); } + +// ZHz +constexpr auto operator"" q_ZHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_ZHz(long double l) { return frequency(l); } + +// YHz +constexpr auto operator"" q_YHz(unsigned long long l) { return frequency(l); } +constexpr auto operator"" q_YHz(long double l) { return frequency(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/inductance.h b/src/include/units/physical/si/inductance.h index d7f13326..6eeef43e 100644 --- a/src/include/units/physical/si/inductance.h +++ b/src/include/units/physical/si/inductance.h @@ -31,10 +31,22 @@ namespace units::si { struct henry : named_unit {}; -struct millihenry : prefixed_unit {}; -struct microhenry : prefixed_unit {}; -struct nanohenry : prefixed_unit {}; +struct yoctohenry : prefixed_unit {}; +struct zeptohenry : prefixed_unit {}; +struct attohenry : prefixed_unit {}; +struct femtohenry : prefixed_unit {}; struct picohenry : prefixed_unit {}; +struct nanohenry : prefixed_unit {}; +struct microhenry : prefixed_unit {}; +struct millihenry : prefixed_unit {}; +struct kilohenry : prefixed_unit {}; +struct megahenry : prefixed_unit {}; +struct gigahenry : prefixed_unit {}; +struct terahenry : prefixed_unit {}; +struct petahenry : prefixed_unit {}; +struct exahenry : prefixed_unit {}; +struct zettahenry : prefixed_unit {}; +struct yottahenry : prefixed_unit {}; struct dim_inductance : physical::dim_inductance {}; @@ -47,22 +59,70 @@ inline namespace literals { constexpr auto operator"" q_H(unsigned long long l) { return inductance(l); } constexpr auto operator"" q_H(long double l) { return inductance(l); } -// mH -constexpr auto operator"" q_mH(unsigned long long l) { return inductance(l); } -constexpr auto operator"" q_mH(long double l) { return inductance(l); } +// yH +constexpr auto operator"" q_yH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_yH(long double l) { return inductance(l); } -// µH -constexpr auto operator"" q_uH(unsigned long long l) { return inductance(l); } -constexpr auto operator"" q_uH(long double l) { return inductance(l); } +// zH +constexpr auto operator"" q_zH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_zH(long double l) { return inductance(l); } -// nH -constexpr auto operator"" q_nH(unsigned long long l) { return inductance(l); } -constexpr auto operator"" q_nH(long double l) { return inductance(l); } +// aH +constexpr auto operator"" q_aH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_aH(long double l) { return inductance(l); } + +// fH +constexpr auto operator"" q_fH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_fH(long double l) { return inductance(l); } // pH constexpr auto operator"" q_pH(unsigned long long l) { return inductance(l); } constexpr auto operator"" q_pH(long double l) { return inductance(l); } +// nH +constexpr auto operator"" q_nH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_nH(long double l) { return inductance(l); } + +// µH +constexpr auto operator"" q_uH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_uH(long double l) { return inductance(l); } + +// mH +constexpr auto operator"" q_mH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_mH(long double l) { return inductance(l); } + +// kH +constexpr auto operator"" q_kH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_kH(long double l) { return inductance(l); } + +// MH +constexpr auto operator"" q_MH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_MH(long double l) { return inductance(l); } + +// GH +constexpr auto operator"" q_GH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_GH(long double l) { return inductance(l); } + +// TH +constexpr auto operator"" q_TH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_TH(long double l) { return inductance(l); } + +// PH +constexpr auto operator"" q_PH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_PH(long double l) { return inductance(l); } + +// EH +constexpr auto operator"" q_EH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_EH(long double l) { return inductance(l); } + +// ZH +constexpr auto operator"" q_ZH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_ZH(long double l) { return inductance(l); } + +// YH +constexpr auto operator"" q_YH(unsigned long long l) { return inductance(l); } +constexpr auto operator"" q_YH(long double l) { return inductance(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/length.h b/src/include/units/physical/si/length.h index 53543706..11f8a26b 100644 --- a/src/include/units/physical/si/length.h +++ b/src/include/units/physical/si/length.h @@ -29,12 +29,26 @@ namespace units::si { struct metre : named_unit {}; +struct yoctometre : prefixed_unit {}; +struct zeptometre : prefixed_unit {}; +struct attometre : prefixed_unit {}; +struct femtometre : prefixed_unit {}; +struct picometre : prefixed_unit {}; +struct nanometre : prefixed_unit {}; +struct micrometre : prefixed_unit {}; struct millimetre : prefixed_unit {}; struct centimetre : prefixed_unit {}; struct decimetre : prefixed_unit {}; +struct decametre : prefixed_unit {}; struct hectometre : prefixed_unit {}; struct kilometre : prefixed_unit {}; -struct femtometre : prefixed_unit {}; +struct megametre : prefixed_unit {}; +struct gigametre : prefixed_unit {}; +struct terametre : prefixed_unit {}; +struct petametre : prefixed_unit {}; +struct exametre : prefixed_unit {}; +struct zettametre : prefixed_unit {}; +struct yottametre : prefixed_unit {}; struct astronomical_unit : named_scaled_unit, metre> {}; @@ -49,10 +63,34 @@ inline namespace literals { constexpr auto operator"" q_m(unsigned long long l) { return length(l); } constexpr auto operator"" q_m(long double l) { return length(l); } +// ym +constexpr auto operator"" q_ym(unsigned long long l) { return length(l); } +constexpr auto operator"" q_ym(long double l) { return length(l); } + +// zm +constexpr auto operator"" q_zm(unsigned long long l) { return length(l); } +constexpr auto operator"" q_zm(long double l) { return length(l); } + +// am +constexpr auto operator"" q_am(unsigned long long l) { return length(l); } +constexpr auto operator"" q_am(long double l) { return length(l); } + // fm constexpr auto operator"" q_fm(unsigned long long l) { return length(l); } constexpr auto operator"" q_fm(long double l) { return length(l); } +// pm +constexpr auto operator"" q_pm(unsigned long long l) { return length(l); } +constexpr auto operator"" q_pm(long double l) { return length(l); } + +// nm +constexpr auto operator"" q_nm(unsigned long long l) { return length(l); } +constexpr auto operator"" q_nm(long double l) { return length(l); } + +// um +constexpr auto operator"" q_um(unsigned long long l) { return length(l); } +constexpr auto operator"" q_um(long double l) { return length(l); } + // mm constexpr auto operator"" q_mm(unsigned long long l) { return length(l); } constexpr auto operator"" q_mm(long double l) { return length(l); } @@ -65,6 +103,10 @@ constexpr auto operator"" q_cm(long double l) { return length(l); } constexpr auto operator"" q_dm(long double l) { return length(l); } +// dam +constexpr auto operator"" q_dam(unsigned long long l) { return length(l); } +constexpr auto operator"" q_dam(long double l) { return length(l); } + // hm constexpr auto operator"" q_hm(unsigned long long l) { return length(l); } constexpr auto operator"" q_hm(long double l) { return length(l); } @@ -73,6 +115,34 @@ constexpr auto operator"" q_hm(long double l) { return length(l); } constexpr auto operator"" q_km(long double l) { return length(l); } +// Mm +constexpr auto operator"" q_Mm(unsigned long long l) { return length(l); } +constexpr auto operator"" q_Mm(long double l) { return length(l); } + +// Gm +constexpr auto operator"" q_Gm(unsigned long long l) { return length(l); } +constexpr auto operator"" q_Gm(long double l) { return length(l); } + +// Tm +constexpr auto operator"" q_Tm(unsigned long long l) { return length(l); } +constexpr auto operator"" q_Tm(long double l) { return length(l); } + +// Pm +constexpr auto operator"" q_Pm(unsigned long long l) { return length(l); } +constexpr auto operator"" q_Pm(long double l) { return length(l); } + +// Em +constexpr auto operator"" q_Em(unsigned long long l) { return length(l); } +constexpr auto operator"" q_Em(long double l) { return length(l); } + +// Zm +constexpr auto operator"" q_Zm(unsigned long long l) { return length(l); } +constexpr auto operator"" q_Zm(long double l) { return length(l); } + +// Ym +constexpr auto operator"" q_Ym(unsigned long long l) { return length(l); } +constexpr auto operator"" q_Ym(long double l) { return length(l); } + // au constexpr auto operator"" q_au(unsigned long long l) { return length(l); } constexpr auto operator"" q_au(long double l) { return length(l); } diff --git a/src/include/units/physical/si/luminous_intensity.h b/src/include/units/physical/si/luminous_intensity.h index 9fde5ce7..2c546b66 100644 --- a/src/include/units/physical/si/luminous_intensity.h +++ b/src/include/units/physical/si/luminous_intensity.h @@ -29,6 +29,26 @@ namespace units::si { struct candela : named_unit {}; +struct yoctocandela : prefixed_unit {}; +struct zeptocandela : prefixed_unit {}; +struct attocandela : prefixed_unit {}; +struct femtocandela : prefixed_unit {}; +struct picocandela : prefixed_unit {}; +struct nanocandela : prefixed_unit {}; +struct microcandela : prefixed_unit {}; +struct millicandela : prefixed_unit {}; +struct centicandela : prefixed_unit {}; +struct decicandela : prefixed_unit {}; +struct decacandela : prefixed_unit {}; +struct hectocandela : prefixed_unit {}; +struct kilocandela : prefixed_unit {}; +struct megacandela : prefixed_unit {}; +struct gigacandela : prefixed_unit {}; +struct teracandela : prefixed_unit {}; +struct petacandela : prefixed_unit {}; +struct exacandela : prefixed_unit {}; +struct zettacandela : prefixed_unit {}; +struct yottacandela : prefixed_unit {}; struct dim_luminous_intensity : physical::dim_luminous_intensity {}; @@ -41,6 +61,86 @@ inline namespace literals { constexpr auto operator"" q_cd(unsigned long long l) { return luminous_intensity(l); } constexpr auto operator"" q_cd(long double l) { return luminous_intensity(l); } +// ycd +constexpr auto operator"" q_ycd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_ycd(long double l) { return luminous_intensity(l); } + +// zcd +constexpr auto operator"" q_zcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_zcd(long double l) { return luminous_intensity(l); } + +// acd +constexpr auto operator"" q_acd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_acd(long double l) { return luminous_intensity(l); } + +// fcd +constexpr auto operator"" q_fcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_fcd(long double l) { return luminous_intensity(l); } + +// pcd +constexpr auto operator"" q_pcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_pcd(long double l) { return luminous_intensity(l); } + +// ncd +constexpr auto operator"" q_ncd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_ncd(long double l) { return luminous_intensity(l); } + +// ucd +constexpr auto operator"" q_ucd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_ucd(long double l) { return luminous_intensity(l); } + +// mcd +constexpr auto operator"" q_mcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_mcd(long double l) { return luminous_intensity(l); } + +// ccd +constexpr auto operator"" q_ccd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_ccd(long double l) { return luminous_intensity(l); } + +// dcd +constexpr auto operator"" q_dcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_dcd(long double l) { return luminous_intensity(l); } + +// dacd +constexpr auto operator"" q_dacd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_dacd(long double l) { return luminous_intensity(l); } + +// hcd +constexpr auto operator"" q_hcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_hcd(long double l) { return luminous_intensity(l); } + +// kcd +constexpr auto operator"" q_kcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_kcd(long double l) { return luminous_intensity(l); } + +// Mcd +constexpr auto operator"" q_Mcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_Mcd(long double l) { return luminous_intensity(l); } + +// Gcd +constexpr auto operator"" q_Gcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_Gcd(long double l) { return luminous_intensity(l); } + +// Tcd +constexpr auto operator"" q_Tcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_Tcd(long double l) { return luminous_intensity(l); } + +// Pcd +constexpr auto operator"" q_Pcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_Pcd(long double l) { return luminous_intensity(l); } + +// Ecd +constexpr auto operator"" q_Ecd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_Ecd(long double l) { return luminous_intensity(l); } + +// Zcd +constexpr auto operator"" q_Zcd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_Zcd(long double l) { return luminous_intensity(l); } + +// Ycd +constexpr auto operator"" q_Ycd(unsigned long long l) { return luminous_intensity(l); } +constexpr auto operator"" q_Ycd(long double l) { return luminous_intensity(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/magnetic_flux.h b/src/include/units/physical/si/magnetic_flux.h index 2e520144..b857d9e0 100644 --- a/src/include/units/physical/si/magnetic_flux.h +++ b/src/include/units/physical/si/magnetic_flux.h @@ -31,10 +31,22 @@ namespace units::si { struct weber : named_unit {}; -struct milliweber : prefixed_unit {}; -struct microweber : prefixed_unit {}; -struct nanoweber : prefixed_unit {}; +struct yoctoweber : prefixed_unit {}; +struct zeptoweber : prefixed_unit {}; +struct attoweber : prefixed_unit {}; +struct femtoweber : prefixed_unit {}; struct picoweber : prefixed_unit {}; +struct nanoweber : prefixed_unit {}; +struct microweber : prefixed_unit {}; +struct milliweber : prefixed_unit {}; +struct kiloweber : prefixed_unit {}; +struct megaweber : prefixed_unit {}; +struct gigaweber : prefixed_unit {}; +struct teraweber : prefixed_unit {}; +struct petaweber : prefixed_unit {}; +struct exaweber : prefixed_unit {}; +struct zettaweber : prefixed_unit {}; +struct yottaweber : prefixed_unit {}; struct dim_magnetic_flux : physical::dim_magnetic_flux {}; @@ -47,22 +59,70 @@ inline namespace literals { constexpr auto operator"" q_Wb(unsigned long long l) { return magnetic_flux(l); } constexpr auto operator"" q_Wb(long double l) { return magnetic_flux(l); } -// mWb -constexpr auto operator"" q_mWb(unsigned long long l) { return magnetic_flux(l); } -constexpr auto operator"" q_mWb(long double l) { return magnetic_flux(l); } +// yWb +constexpr auto operator"" q_yWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_yWb(long double l) { return magnetic_flux(l); } -// µWb -constexpr auto operator"" q_uWb(unsigned long long l) { return magnetic_flux(l); } -constexpr auto operator"" q_uWb(long double l) { return magnetic_flux(l); } +// zWb +constexpr auto operator"" q_zWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_zWb(long double l) { return magnetic_flux(l); } -// nWb -constexpr auto operator"" q_nWb(unsigned long long l) { return magnetic_flux(l); } -constexpr auto operator"" q_nWb(long double l) { return magnetic_flux(l); } +// aWb +constexpr auto operator"" q_aWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_aWb(long double l) { return magnetic_flux(l); } + +// fWb +constexpr auto operator"" q_fWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_fWb(long double l) { return magnetic_flux(l); } // pWb constexpr auto operator"" q_pWb(unsigned long long l) { return magnetic_flux(l); } constexpr auto operator"" q_pWb(long double l) { return magnetic_flux(l); } +// nWb +constexpr auto operator"" q_nWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_nWb(long double l) { return magnetic_flux(l); } + +// µWb +constexpr auto operator"" q_uWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_uWb(long double l) { return magnetic_flux(l); } + +// mWb +constexpr auto operator"" q_mWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_mWb(long double l) { return magnetic_flux(l); } + +// kWb +constexpr auto operator"" q_kWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_kWb(long double l) { return magnetic_flux(l); } + +// MWb +constexpr auto operator"" q_MWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_MWb(long double l) { return magnetic_flux(l); } + +// GWb +constexpr auto operator"" q_GWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_GWb(long double l) { return magnetic_flux(l); } + +// TWb +constexpr auto operator"" q_TWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_TWb(long double l) { return magnetic_flux(l); } + +// PWb +constexpr auto operator"" q_PWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_PWb(long double l) { return magnetic_flux(l); } + +// EWb +constexpr auto operator"" q_EWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_EWb(long double l) { return magnetic_flux(l); } + +// ZWb +constexpr auto operator"" q_ZWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_ZWb(long double l) { return magnetic_flux(l); } + +// YWb +constexpr auto operator"" q_YWb(unsigned long long l) { return magnetic_flux(l); } +constexpr auto operator"" q_YWb(long double l) { return magnetic_flux(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/magnetic_induction.h b/src/include/units/physical/si/magnetic_induction.h index 1f577783..e3511487 100644 --- a/src/include/units/physical/si/magnetic_induction.h +++ b/src/include/units/physical/si/magnetic_induction.h @@ -33,10 +33,22 @@ namespace units::si { struct tesla : named_unit {}; -struct millitesla : prefixed_unit {}; -struct microtesla : prefixed_unit {}; -struct nanotesla : prefixed_unit {}; +struct yoctotesla : prefixed_unit {}; +struct zeptotesla : prefixed_unit {}; +struct attotesla : prefixed_unit {}; +struct femtotesla : prefixed_unit {}; struct picotesla : prefixed_unit {}; +struct nanotesla : prefixed_unit {}; +struct microtesla : prefixed_unit {}; +struct millitesla : prefixed_unit {}; +struct kilotesla : prefixed_unit {}; +struct megatesla : prefixed_unit {}; +struct gigatesla : prefixed_unit {}; +struct teratesla : prefixed_unit {}; +struct petatesla : prefixed_unit {}; +struct exatesla : prefixed_unit {}; +struct zettatesla : prefixed_unit {}; +struct yottatesla : prefixed_unit {}; struct gauss : named_scaled_unit, tesla> {}; @@ -51,21 +63,69 @@ inline namespace literals { constexpr auto operator"" q_T(unsigned long long l) { return magnetic_induction(l); } constexpr auto operator"" q_T(long double l) { return magnetic_induction(l); } -// mT -constexpr auto operator"" q_mT(unsigned long long l) { return magnetic_induction(l); } -constexpr auto operator"" q_mT(long double l) { return magnetic_induction(l); } +// yT +constexpr auto operator"" q_yT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_yT(long double l) { return magnetic_induction(l); } -// µT -constexpr auto operator"" q_uT(unsigned long long l) { return magnetic_induction(l); } -constexpr auto operator"" q_uT(long double l) { return magnetic_induction(l); } +// zT +constexpr auto operator"" q_zT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_zT(long double l) { return magnetic_induction(l); } + +// aT +constexpr auto operator"" q_aT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_aT(long double l) { return magnetic_induction(l); } + +// fT +constexpr auto operator"" q_fT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_fT(long double l) { return magnetic_induction(l); } + +// pT +constexpr auto operator"" q_pT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_pT(long double l) { return magnetic_induction(l); } // nT constexpr auto operator"" q_nT(unsigned long long l) { return magnetic_induction(l); } constexpr auto operator"" q_nT(long double l) { return magnetic_induction(l); } -//pT -constexpr auto operator"" q_pT(unsigned long long l) { return magnetic_induction(l); } -constexpr auto operator"" q_pT(long double l) { return magnetic_induction(l); } +// µT +constexpr auto operator"" q_uT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_uT(long double l) { return magnetic_induction(l); } + +// mT +constexpr auto operator"" q_mT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_mT(long double l) { return magnetic_induction(l); } + +// kT +constexpr auto operator"" q_kT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_kT(long double l) { return magnetic_induction(l); } + +// MT +constexpr auto operator"" q_MT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_MT(long double l) { return magnetic_induction(l); } + +// GT +constexpr auto operator"" q_GT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_GT(long double l) { return magnetic_induction(l); } + +// TT +constexpr auto operator"" q_TT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_TT(long double l) { return magnetic_induction(l); } + +// PT +constexpr auto operator"" q_PT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_PT(long double l) { return magnetic_induction(l); } + +// ET +constexpr auto operator"" q_ET(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_ET(long double l) { return magnetic_induction(l); } + +// ZT +constexpr auto operator"" q_ZT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_ZT(long double l) { return magnetic_induction(l); } + +// YT +constexpr auto operator"" q_YT(unsigned long long l) { return magnetic_induction(l); } +constexpr auto operator"" q_YT(long double l) { return magnetic_induction(l); } // G constexpr auto operator"" q_G(unsigned long long l) { return magnetic_induction(l); } diff --git a/src/include/units/physical/si/mass.h b/src/include/units/physical/si/mass.h index ad9bb089..1e0d6c90 100644 --- a/src/include/units/physical/si/mass.h +++ b/src/include/units/physical/si/mass.h @@ -29,8 +29,48 @@ namespace units::si { struct gram : named_unit {}; +struct yoctogram : prefixed_unit {}; +struct zeptogram : prefixed_unit {}; +struct attogram : prefixed_unit {}; +struct femtogram : prefixed_unit {}; +struct picogram : prefixed_unit {}; +struct nanogram : prefixed_unit {}; +struct microgram : prefixed_unit {}; +struct milligram : prefixed_unit {}; +struct centigram : prefixed_unit {}; +struct decigram : prefixed_unit {}; +struct decagram : prefixed_unit {}; +struct hectogram : prefixed_unit {}; struct kilogram : prefixed_unit {}; -struct tonne : named_scaled_unit, kilogram> {}; +struct megagram : prefixed_unit {}; +struct gigagram : prefixed_unit {}; +struct teragram : prefixed_unit {}; +struct petagram : prefixed_unit {}; +struct exagram : prefixed_unit {}; +struct zettagram : prefixed_unit {}; +struct yottagram : prefixed_unit {}; + +struct tonne : alias_unit {}; +struct yoctotonne : prefixed_alias_unit {}; +struct zeptotonne : prefixed_alias_unit {}; +struct attotonne : prefixed_alias_unit {}; +struct femtotonne : prefixed_alias_unit {}; +struct picotonne : prefixed_alias_unit {}; +struct nanotonne : prefixed_alias_unit {}; +struct microtonne : prefixed_alias_unit {}; +struct millitonne : prefixed_alias_unit {}; +struct centitonne : prefixed_unit {}; +struct decitonne : prefixed_unit {}; +struct decatonne : prefixed_unit {}; +struct hectotonne : prefixed_unit {}; +struct kilotonne : prefixed_alias_unit {}; +struct megatonne : prefixed_alias_unit {}; +struct gigatonne : prefixed_alias_unit {}; +struct teratonne : prefixed_alias_unit {}; +struct petatonne : prefixed_alias_unit {}; +struct exatonne : prefixed_alias_unit {}; +struct zettatonne : prefixed_unit {}; +struct yottatonne : prefixed_unit {}; struct dalton : named_scaled_unit, kilogram> {}; @@ -45,14 +85,170 @@ inline namespace literals { constexpr auto operator"" q_g(unsigned long long l) { return mass(l); } constexpr auto operator"" q_g(long double l) { return mass(l); } +// yg +constexpr auto operator"" q_yg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_yg(long double l) { return mass(l); } + +// zg +constexpr auto operator"" q_zg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_zg(long double l) { return mass(l); } + +// ag +constexpr auto operator"" q_ag(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_ag(long double l) { return mass(l); } + +// fg +constexpr auto operator"" q_fg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_fg(long double l) { return mass(l); } + +// pg +constexpr auto operator"" q_pg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_pg(long double l) { return mass(l); } + +// ng +constexpr auto operator"" q_ng(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_ng(long double l) { return mass(l); } + +// ug +constexpr auto operator"" q_ug(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_ug(long double l) { return mass(l); } + +// mg +constexpr auto operator"" q_mg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_mg(long double l) { return mass(l); } + +// cg +constexpr auto operator"" q_cg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_cg(long double l) { return mass(l); } + +// dg +constexpr auto operator"" q_dg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_dg(long double l) { return mass(l); } + +// dag +constexpr auto operator"" q_dag(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_dag(long double l) { return mass(l); } + +// hg +constexpr auto operator"" q_hg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_hg(long double l) { return mass(l); } + // kg constexpr auto operator"" q_kg(unsigned long long l) { return mass(l); } constexpr auto operator"" q_kg(long double l) { return mass(l); } +// Mg +constexpr auto operator"" q_Mg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Mg(long double l) { return mass(l); } + +// Gg +constexpr auto operator"" q_Gg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Gg(long double l) { return mass(l); } + +// Tg +constexpr auto operator"" q_Tg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Tg(long double l) { return mass(l); } + +// Pg +constexpr auto operator"" q_Pg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Pg(long double l) { return mass(l); } + +// Eg +constexpr auto operator"" q_Eg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Eg(long double l) { return mass(l); } + +// Zg +constexpr auto operator"" q_Zg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Zg(long double l) { return mass(l); } + +// Yg +constexpr auto operator"" q_Yg(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Yg(long double l) { return mass(l); } + // t constexpr auto operator"" q_t(unsigned long long l) { return mass(l); } constexpr auto operator"" q_t(long double l) { return mass(l); } +// yt +constexpr auto operator"" q_yt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_yt(long double l) { return mass(l); } + +// zt +constexpr auto operator"" q_zt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_zt(long double l) { return mass(l); } + +// at +constexpr auto operator"" q_at(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_at(long double l) { return mass(l); } + +// ft +/*constexpr auto operator"" q_ft(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_ft(long double l) { return mass(l); }*/ + +// pt +constexpr auto operator"" q_pt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_pt(long double l) { return mass(l); } + +// nt +constexpr auto operator"" q_nt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_nt(long double l) { return mass(l); } + +// ut +constexpr auto operator"" q_ut(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_ut(long double l) { return mass(l); } + +// mt +constexpr auto operator"" q_mt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_mt(long double l) { return mass(l); } + +// ct +constexpr auto operator"" q_ct(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_ct(long double l) { return mass(l); } + +// dt +constexpr auto operator"" q_dt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_dt(long double l) { return mass(l); } + +// dat +constexpr auto operator"" q_dat(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_dat(long double l) { return mass(l); } + +// ht +constexpr auto operator"" q_ht(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_ht(long double l) { return mass(l); } + +// kt +constexpr auto operator"" q_kt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_kt(long double l) { return mass(l); } + +// Mt +constexpr auto operator"" q_Mt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Mt(long double l) { return mass(l); } + +// Gt +constexpr auto operator"" q_Gt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Gt(long double l) { return mass(l); } + +// Tt +constexpr auto operator"" q_Tt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Tt(long double l) { return mass(l); } + +// Pt +constexpr auto operator"" q_Pt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Pt(long double l) { return mass(l); } + +// Et +constexpr auto operator"" q_Et(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Et(long double l) { return mass(l); } + +// Zt +constexpr auto operator"" q_Zt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Zt(long double l) { return mass(l); } + +// Yt +constexpr auto operator"" q_Yt(unsigned long long l) { return mass(l); } +constexpr auto operator"" q_Yt(long double l) { return mass(l); } + // Da constexpr auto operator"" q_Da(unsigned long long l) { return mass(l); } constexpr auto operator"" q_Da(long double l) { return mass(l); } diff --git a/src/include/units/physical/si/power.h b/src/include/units/physical/si/power.h index 77e00287..e4846724 100644 --- a/src/include/units/physical/si/power.h +++ b/src/include/units/physical/si/power.h @@ -30,10 +30,22 @@ namespace units::si { struct watt : named_unit {}; +struct yoctowatt : prefixed_unit {}; +struct zeptowatt : prefixed_unit {}; +struct attowatt : prefixed_unit {}; +struct femtowatt : prefixed_unit {}; +struct picowatt : prefixed_unit {}; +struct nanowatt : prefixed_unit {}; +struct microwatt : prefixed_unit {}; struct milliwatt : prefixed_unit {}; struct kilowatt : prefixed_unit {}; struct megawatt : prefixed_unit {}; struct gigawatt : prefixed_unit {}; +struct terawatt : prefixed_unit {}; +struct petawatt : prefixed_unit {}; +struct exawatt : prefixed_unit {}; +struct zettawatt : prefixed_unit {}; +struct yottawatt : prefixed_unit {}; struct dim_power : physical::dim_power {}; @@ -46,6 +58,34 @@ inline namespace literals { constexpr auto operator"" q_W(unsigned long long l) { return power(l); } constexpr auto operator"" q_W(long double l) { return power(l); } +// yW +constexpr auto operator"" q_yW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_yW(long double l) { return power(l); } + +// zW +constexpr auto operator"" q_zW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_zW(long double l) { return power(l); } + +// aW +constexpr auto operator"" q_aW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_aW(long double l) { return power(l); } + +// fW +constexpr auto operator"" q_fW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_fW(long double l) { return power(l); } + +// pW +constexpr auto operator"" q_pW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_pW(long double l) { return power(l); } + +// nW +constexpr auto operator"" q_nW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_nW(long double l) { return power(l); } + +// uW +constexpr auto operator"" q_uW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_uW(long double l) { return power(l); } + // mW constexpr auto operator"" q_mW(unsigned long long l) { return power(l); } constexpr auto operator"" q_mW(long double l) { return power(l); } @@ -62,6 +102,26 @@ constexpr auto operator"" q_MW(long double l) { return power(l); } constexpr auto operator"" q_GW(long double l) { return power(l); } +// TW +constexpr auto operator"" q_TW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_TW(long double l) { return power(l); } + +// PW +constexpr auto operator"" q_PW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_PW(long double l) { return power(l); } + +// EW +constexpr auto operator"" q_EW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_EW(long double l) { return power(l); } + +// ZW +constexpr auto operator"" q_ZW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_ZW(long double l) { return power(l); } + +// YW +constexpr auto operator"" q_YW(unsigned long long l) { return power(l); } +constexpr auto operator"" q_YW(long double l) { return power(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/pressure.h b/src/include/units/physical/si/pressure.h index 6ec97776..dd6f987c 100644 --- a/src/include/units/physical/si/pressure.h +++ b/src/include/units/physical/si/pressure.h @@ -31,6 +31,26 @@ namespace units::si { struct pascal : named_unit {}; +struct yoctopascal : prefixed_unit {}; +struct zeptopascal : prefixed_unit {}; +struct attopascal : prefixed_unit {}; +struct femtopascal : prefixed_unit {}; +struct picopascal : prefixed_unit {}; +struct nanopascal : prefixed_unit {}; +struct micropascal : prefixed_unit {}; +struct millipascal : prefixed_unit {}; +struct centipascal : prefixed_unit {}; +struct decipascal : prefixed_unit {}; +struct decapascal : prefixed_unit {}; +struct hectopascal : prefixed_unit {}; +struct kilopascal : prefixed_unit {}; +struct megapascal : prefixed_unit {}; +struct gigapascal : prefixed_unit {}; +struct terapascal : prefixed_unit {}; +struct petapascal : prefixed_unit {}; +struct exapascal : prefixed_unit {}; +struct zettapascal : prefixed_unit {}; +struct yottapascal : prefixed_unit {}; struct dim_pressure : physical::dim_pressure {}; @@ -43,6 +63,86 @@ inline namespace literals { constexpr auto operator"" q_Pa(unsigned long long l) { return pressure(l); } constexpr auto operator"" q_Pa(long double l) { return pressure(l); } +// yPa +constexpr auto operator"" q_yPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_yPa(long double l) { return pressure(l); } + +// zPa +constexpr auto operator"" q_zPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_zPa(long double l) { return pressure(l); } + +// aPa +constexpr auto operator"" q_aPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_aPa(long double l) { return pressure(l); } + +// fPa +constexpr auto operator"" q_fPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_fPa(long double l) { return pressure(l); } + +// pPa +constexpr auto operator"" q_pPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_pPa(long double l) { return pressure(l); } + +// nPa +constexpr auto operator"" q_nPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_nPa(long double l) { return pressure(l); } + +// uPa +constexpr auto operator"" q_uPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_uPa(long double l) { return pressure(l); } + +// mPa +constexpr auto operator"" q_mPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_mPa(long double l) { return pressure(l); } + +// cPa +constexpr auto operator"" q_cPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_cPa(long double l) { return pressure(l); } + +// dPa +constexpr auto operator"" q_dPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_dPa(long double l) { return pressure(l); } + +// daPa +constexpr auto operator"" q_daPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_daPa(long double l) { return pressure(l); } + +// hPa +constexpr auto operator"" q_hPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_hPa(long double l) { return pressure(l); } + +// kPa +constexpr auto operator"" q_kPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_kPa(long double l) { return pressure(l); } + +// MPa +constexpr auto operator"" q_MPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_MPa(long double l) { return pressure(l); } + +// GPa +constexpr auto operator"" q_GPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_GPa(long double l) { return pressure(l); } + +// TPa +constexpr auto operator"" q_TPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_TPa(long double l) { return pressure(l); } + +// PPa +constexpr auto operator"" q_PPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_PPa(long double l) { return pressure(l); } + +// EPa +constexpr auto operator"" q_EPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_EPa(long double l) { return pressure(l); } + +// ZPa +constexpr auto operator"" q_ZPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_ZPa(long double l) { return pressure(l); } + +// YPa +constexpr auto operator"" q_YPa(unsigned long long l) { return pressure(l); } +constexpr auto operator"" q_YPa(long double l) { return pressure(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/resistance.h b/src/include/units/physical/si/resistance.h index 6a1c0a3e..59b1d1a1 100644 --- a/src/include/units/physical/si/resistance.h +++ b/src/include/units/physical/si/resistance.h @@ -31,9 +31,22 @@ namespace units::si { struct ohm : named_unit {}; +struct yoctoohm : prefixed_unit {}; +struct zeptoohm : prefixed_unit {}; +struct attoohm : prefixed_unit {}; +struct femtoohm : prefixed_unit {}; +struct picoohm : prefixed_unit {}; +struct nanoohm : prefixed_unit {}; +struct microohm : prefixed_unit {}; struct milliohm : prefixed_unit {}; struct kiloohm : prefixed_unit {}; struct megaohm : prefixed_unit {}; +struct gigaohm : prefixed_unit {}; +struct teraohm : prefixed_unit {}; +struct petaohm : prefixed_unit {}; +struct exaohm : prefixed_unit {}; +struct zettaohm : prefixed_unit {}; +struct yottaohm : prefixed_unit {}; struct dim_resistance : physical::dim_resistance {}; @@ -46,6 +59,34 @@ inline namespace literals { constexpr auto operator"" q_R(unsigned long long l) { return resistance(l); } constexpr auto operator"" q_R(long double l) { return resistance(l); } +// yR +constexpr auto operator"" q_yR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_yR(long double l) { return resistance(l); } + +// zR +constexpr auto operator"" q_zR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_zR(long double l) { return resistance(l); } + +// aR +constexpr auto operator"" q_aR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_aR(long double l) { return resistance(l); } + +// fR +constexpr auto operator"" q_fR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_fR(long double l) { return resistance(l); } + +// pR +constexpr auto operator"" q_pR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_pR(long double l) { return resistance(l); } + +// nR +constexpr auto operator"" q_nR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_nR(long double l) { return resistance(l); } + +// uR +constexpr auto operator"" q_uR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_uR(long double l) { return resistance(l); } + // mR constexpr auto operator"" q_mR(unsigned long long l) { return resistance(l); } constexpr auto operator"" q_mR(long double l) { return resistance(l); } @@ -58,6 +99,30 @@ constexpr auto operator"" q_kR(long double l) { return resistance(l); } constexpr auto operator"" q_MR(long double l) { return resistance(l); } +// GR +constexpr auto operator"" q_GR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_GR(long double l) { return resistance(l); } + +// TR +constexpr auto operator"" q_TR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_TR(long double l) { return resistance(l); } + +// PR +constexpr auto operator"" q_PR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_PR(long double l) { return resistance(l); } + +// ER +constexpr auto operator"" q_ER(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_ER(long double l) { return resistance(l); } + +// ZR +constexpr auto operator"" q_ZR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_ZR(long double l) { return resistance(l); } + +// YR +constexpr auto operator"" q_YR(unsigned long long l) { return resistance(l); } +constexpr auto operator"" q_YR(long double l) { return resistance(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/physical/si/time.h b/src/include/units/physical/si/time.h index b60b799b..16409534 100644 --- a/src/include/units/physical/si/time.h +++ b/src/include/units/physical/si/time.h @@ -29,6 +29,11 @@ namespace units::si { struct second : named_unit {}; +struct yoctosecond : prefixed_unit {}; +struct zeptosecond : prefixed_unit {}; +struct attosecond : prefixed_unit {}; +struct femtosecond : prefixed_unit {}; +struct picosecond : prefixed_unit {}; struct nanosecond : prefixed_unit {}; struct microsecond : prefixed_unit {}; struct millisecond : prefixed_unit {}; @@ -43,6 +48,26 @@ using time = quantity; inline namespace literals { +// ys +constexpr auto operator"" q_ys(unsigned long long l) { return time(l); } +constexpr auto operator"" q_ys(long double l) { return time(l); } + +// zs +constexpr auto operator"" q_zs(unsigned long long l) { return time(l); } +constexpr auto operator"" q_zs(long double l) { return time(l); } + +// as +constexpr auto operator"" q_as(unsigned long long l) { return time(l); } +constexpr auto operator"" q_as(long double l) { return time(l); } + +// fs +constexpr auto operator"" q_fs(unsigned long long l) { return time(l); } +constexpr auto operator"" q_fs(long double l) { return time(l); } + +// ps +constexpr auto operator"" q_ps(unsigned long long l) { return time(l); } +constexpr auto operator"" q_ps(long double l) { return time(l); } + // ns constexpr auto operator"" q_ns(unsigned long long l) { return time(l); } constexpr auto operator"" q_ns(long double l) { return time(l); } diff --git a/src/include/units/physical/si/voltage.h b/src/include/units/physical/si/voltage.h index 2b8bc18e..51b46cb9 100644 --- a/src/include/units/physical/si/voltage.h +++ b/src/include/units/physical/si/voltage.h @@ -31,10 +31,26 @@ namespace units::si { struct volt : named_unit {}; -struct millivolt : prefixed_unit {}; -struct microvolt : prefixed_unit {}; -struct nanovolt : prefixed_unit {}; +struct yoctovolt : prefixed_unit {}; +struct zeptovolt : prefixed_unit {}; +struct attovolt : prefixed_unit {}; +struct femtovolt : prefixed_unit {}; struct picovolt : prefixed_unit {}; +struct nanovolt : prefixed_unit {}; +struct microvolt : prefixed_unit {}; +struct millivolt : prefixed_unit {}; +struct centivolt : prefixed_unit {}; +struct decivolt : prefixed_unit {}; +struct decavolt : prefixed_unit {}; +struct hectovolt : prefixed_unit {}; +struct kilovolt : prefixed_unit {}; +struct megavolt : prefixed_unit {}; +struct gigavolt : prefixed_unit {}; +struct teravolt : prefixed_unit {}; +struct petavolt : prefixed_unit {}; +struct exavolt : prefixed_unit {}; +struct zettavolt : prefixed_unit {}; +struct yottavolt : prefixed_unit {}; struct dim_voltage : physical::dim_voltage {}; @@ -47,17 +63,85 @@ inline namespace literals { constexpr auto operator"" q_V(unsigned long long l) { return voltage(l); } constexpr auto operator"" q_V(long double l) { return voltage(l); } -constexpr auto operator"" q_mV(unsigned long long l) { return voltage(l); } -constexpr auto operator"" q_mV(long double l) { return voltage(l); } +// yV +constexpr auto operator"" q_yV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_yV(long double l) { return voltage(l); } -constexpr auto operator"" q_uV(unsigned long long l) { return voltage(l); } -constexpr auto operator"" q_uV(long double l) { return voltage(l); } +// zV +constexpr auto operator"" q_zV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_zV(long double l) { return voltage(l); } +// aV +constexpr auto operator"" q_aV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_aV(long double l) { return voltage(l); } + +// fV +constexpr auto operator"" q_fV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_fV(long double l) { return voltage(l); } + +// pV +constexpr auto operator"" q_pV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_pV(long double l) { return voltage(l); } + +// nV constexpr auto operator"" q_nV(unsigned long long l) { return voltage(l); } constexpr auto operator"" q_nV(long double l) { return voltage(l); } -constexpr auto operator"" q_pV(unsigned long long l) { return voltage(l); } -constexpr auto operator"" q_pV(long double l) { return voltage(l); } +// uV +constexpr auto operator"" q_uV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_uV(long double l) { return voltage(l); } + +// mV +constexpr auto operator"" q_mV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_mV(long double l) { return voltage(l); } + +// cV +constexpr auto operator"" q_cV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_cV(long double l) { return voltage(l); } + +// dV +constexpr auto operator"" q_dV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_dV(long double l) { return voltage(l); } + +// daV +constexpr auto operator"" q_daV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_daV(long double l) { return voltage(l); } + +// hV +constexpr auto operator"" q_hV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_hV(long double l) { return voltage(l); } + +// kV +constexpr auto operator"" q_kV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_kV(long double l) { return voltage(l); } + +// MV +constexpr auto operator"" q_MV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_MV(long double l) { return voltage(l); } + +// GV +constexpr auto operator"" q_GV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_GV(long double l) { return voltage(l); } + +// TV +constexpr auto operator"" q_TV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_TV(long double l) { return voltage(l); } + +// PV +constexpr auto operator"" q_PV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_PV(long double l) { return voltage(l); } + +// EV +constexpr auto operator"" q_EV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_EV(long double l) { return voltage(l); } + +// ZV +constexpr auto operator"" q_ZV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_ZV(long double l) { return voltage(l); } + +// YV +constexpr auto operator"" q_YV(unsigned long long l) { return voltage(l); } +constexpr auto operator"" q_YV(long double l) { return voltage(l); } } // namespace literals diff --git a/src/include/units/physical/si/volume.h b/src/include/units/physical/si/volume.h index bf28d56d..840bbc5a 100644 --- a/src/include/units/physical/si/volume.h +++ b/src/include/units/physical/si/volume.h @@ -31,18 +31,86 @@ namespace units::si { struct cubic_metre : unit {}; struct dim_volume : physical::dim_volume {}; +struct cubic_yoctometre : deduced_unit {}; +struct cubic_zeptometre : deduced_unit {}; +struct cubic_attometre : deduced_unit {}; +struct cubic_femtometre : deduced_unit {}; +struct cubic_picometre : deduced_unit {}; +struct cubic_nanometre : deduced_unit {}; +struct cubic_micrometre : deduced_unit {}; struct cubic_millimetre : deduced_unit {}; struct cubic_centimetre : deduced_unit {}; +struct cubic_decimetre : deduced_unit {}; +struct cubic_decametre : deduced_unit {}; +struct cubic_hectometre : deduced_unit {}; struct cubic_kilometre : deduced_unit {}; +struct cubic_megametre : deduced_unit {}; +struct cubic_gigametre : deduced_unit {}; +struct cubic_terametre : deduced_unit {}; +struct cubic_petametre : deduced_unit {}; +struct cubic_exametre : deduced_unit {}; +struct cubic_zettametre : deduced_unit {}; +struct cubic_yottametre : deduced_unit {}; -struct litre : deduced_unit {}; - +struct litre : alias_unit {}; +struct yoctolitre : prefixed_alias_unit {}; +struct zeptolitre : prefixed_unit {}; +struct attolitre : prefixed_unit {}; +struct femtolitre : prefixed_alias_unit {}; +struct picolitre : prefixed_unit {}; +struct nanolitre : prefixed_unit {}; +struct microlitre : prefixed_alias_unit {}; +struct millilitre : prefixed_alias_unit {}; +struct centilitre : prefixed_unit {}; +struct decilitre : prefixed_unit {}; +struct decalitre : prefixed_unit {}; +struct hectolitre : prefixed_alias_unit {}; +struct kilolitre : prefixed_alias_unit {}; +struct megalitre : prefixed_alias_unit {}; +struct gigalitre : prefixed_alias_unit {}; +struct teralitre : prefixed_alias_unit {}; +struct petalitre : prefixed_unit {}; +struct exalitre : prefixed_unit {}; +struct zettalitre : prefixed_alias_unit {}; +struct yottalitre : prefixed_unit {}; template using volume = quantity; inline namespace literals { +// m3 +constexpr auto operator"" q_m3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_m3(long double l) { return volume(l); } + +// ym3 +constexpr auto operator"" q_ym3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_ym3(long double l) { return volume(l); } + +// zm3 +constexpr auto operator"" q_zm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_zm3(long double l) { return volume(l); } + +// am3 +constexpr auto operator"" q_am3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_am3(long double l) { return volume(l); } + +// fm3 +constexpr auto operator"" q_fm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_fm3(long double l) { return volume(l); } + +// pm3 +constexpr auto operator"" q_pm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_pm3(long double l) { return volume(l); } + +// nm3 +constexpr auto operator"" q_nm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_nm3(long double l) { return volume(l); } + +// um3 +constexpr auto operator"" q_um3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_um3(long double l) { return volume(l); } + // mm3 constexpr auto operator"" q_mm3(unsigned long long l) { return volume(l); } constexpr auto operator"" q_mm3(long double l) { return volume(l); } @@ -51,18 +119,134 @@ constexpr auto operator"" q_mm3(long double l) { return volume(l); } constexpr auto operator"" q_cm3(long double l) { return volume(l); } -// m3 -constexpr auto operator"" q_m3(unsigned long long l) { return volume(l); } -constexpr auto operator"" q_m3(long double l) { return volume(l); } +// dm3 +constexpr auto operator"" q_dm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_dm3(long double l) { return volume(l); } + +// dam3 +constexpr auto operator"" q_dam3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_dam3(long double l) { return volume(l); } + +// hm3 +constexpr auto operator"" q_hm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_hm3(long double l) { return volume(l); } // km3 constexpr auto operator"" q_km3(unsigned long long l) { return volume(l); } constexpr auto operator"" q_km3(long double l) { return volume(l); } +// Mm3 +constexpr auto operator"" q_Mm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Mm3(long double l) { return volume(l); } + +// Gm3 +constexpr auto operator"" q_Gm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Gm3(long double l) { return volume(l); } + +// Tm3 +constexpr auto operator"" q_Tm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Tm3(long double l) { return volume(l); } + +// Pm3 +constexpr auto operator"" q_Pm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Pm3(long double l) { return volume(l); } + +// Em3 +constexpr auto operator"" q_Em3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Em3(long double l) { return volume(l); } + +// Zm3 +constexpr auto operator"" q_Zm3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Zm3(long double l) { return volume(l); } + +// Ym3 +constexpr auto operator"" q_Ym3(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Ym3(long double l) { return volume(l); } + // l constexpr auto operator"" q_l(unsigned long long l) { return volume(l); } constexpr auto operator"" q_l(long double l) { return volume(l); } +// yl +constexpr auto operator"" q_yl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_yl(long double l) { return volume(l); } + +// zl +constexpr auto operator"" q_zl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_zl(long double l) { return volume(l); } + +// al +constexpr auto operator"" q_al(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_al(long double l) { return volume(l); } + +// fl +constexpr auto operator"" q_fl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_fl(long double l) { return volume(l); } + +// pl +constexpr auto operator"" q_pl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_pl(long double l) { return volume(l); } + +// nl +constexpr auto operator"" q_nl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_nl(long double l) { return volume(l); } + +// ul +constexpr auto operator"" q_ul(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_ul(long double l) { return volume(l); } + +// ml +constexpr auto operator"" q_ml(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_ml(long double l) { return volume(l); } + +// cl +constexpr auto operator"" q_cl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_cl(long double l) { return volume(l); } + +// dl +constexpr auto operator"" q_dl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_dl(long double l) { return volume(l); } + +// dal +constexpr auto operator"" q_dal(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_dal(long double l) { return volume(l); } + +// hl +constexpr auto operator"" q_hl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_hl(long double l) { return volume(l); } + +// kl +constexpr auto operator"" q_kl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_kl(long double l) { return volume(l); } + +// Ml +constexpr auto operator"" q_Ml(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Ml(long double l) { return volume(l); } + +// Gl +constexpr auto operator"" q_Gl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Gl(long double l) { return volume(l); } + +// Tl +constexpr auto operator"" q_Tl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Tl(long double l) { return volume(l); } + +// Pl +constexpr auto operator"" q_Pl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Pl(long double l) { return volume(l); } + +// El +constexpr auto operator"" q_El(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_El(long double l) { return volume(l); } + +// Zl +constexpr auto operator"" q_Zl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Zl(long double l) { return volume(l); } + +// Yl +constexpr auto operator"" q_Yl(unsigned long long l) { return volume(l); } +constexpr auto operator"" q_Yl(long double l) { return volume(l); } + } // namespace literals } // namespace units::si diff --git a/src/include/units/unit.h b/src/include/units/unit.h index 746c47b4..b787274c 100644 --- a/src/include/units/unit.h +++ b/src/include/units/unit.h @@ -74,6 +74,7 @@ template struct unit : downcast_child, Child>> { static constexpr bool is_named = false; using prefix_family = no_prefix; + using base_prefix_family = no_prefix; }; /** @@ -100,6 +101,7 @@ struct named_unit : downcast_child, Child>> { static constexpr bool is_named = true; static constexpr auto symbol = Symbol; using prefix_family = PT; + using base_prefix_family = PT; }; /** @@ -121,6 +123,7 @@ struct named_scaled_unit : downcast_child(); using prefix_family = no_prefix; + using base_prefix_family = U::base_prefix_family; }; // template @@ -172,4 +177,20 @@ struct deduced_unit : downcast_child +struct alias_unit : U { + static constexpr bool is_named = true; + static constexpr auto symbol = Symbol; + using prefix_family = U::base_prefix_family; + using base_prefix_family = U::base_prefix_family; +}; + +template +struct prefixed_alias_unit : U { + static constexpr bool is_named = true; + static constexpr auto symbol = P::symbol + AU::symbol; + using prefix_family = no_prefix; + using base_prefix_family = AU::base_prefix_family; +}; + } // namespace units diff --git a/test/unit_test/runtime/fmt_test.cpp b/test/unit_test/runtime/fmt_test.cpp index 91507c95..23510429 100644 --- a/test/unit_test/runtime/fmt_test.cpp +++ b/test/unit_test/runtime/fmt_test.cpp @@ -300,7 +300,8 @@ TEST_CASE("operator<< on a quantity", "[text][ostream][fmt]") SECTION("iostream") { - CHECK(os.str() == "8 × 10⁻² m³"); + //CHECK(os.str() == "8 × 10⁻² m³"); + CHECK(os.str() == "8 dal"); } SECTION("fmt with default format {} on a quantity") diff --git a/test/unit_test/static/si_test.cpp b/test/unit_test/static/si_test.cpp index d941d1ed..578284a0 100644 --- a/test/unit_test/static/si_test.cpp +++ b/test/unit_test/static/si_test.cpp @@ -52,8 +52,11 @@ static_assert(kilometre::symbol == "km"); static_assert(1q_kg == 1000q_g); static_assert(1q_t == 1000q_kg); +static_assert(1q_kt == 1000000q_kg); static_assert(kilogram::symbol == "kg"); +static_assert(tonne::symbol == "t"); +static_assert(kilotonne::symbol == "kt"); // time @@ -281,6 +284,10 @@ static_assert(10q_km * 10q_km * 10q_km == 1000q_km3); static_assert(1q_m3 == 1'000'000q_cm3); static_assert(1q_dm * 1q_dm * 1q_dm == 1q_l); static_assert(1000q_l == 1q_m3); +static_assert(1q_kl == 1q_m3); + +static_assert(litre::symbol == "l"); +static_assert(kilolitre::symbol == "kl"); static_assert(detail::unit_text() == basic_symbol_text("m³", "m^3"));