9#ifndef DRYCHEM_CPP_UNITS_INCLUDE_CPP_UNITS_TYPES_PHYSICALQUANTITY_HPP
10#define DRYCHEM_CPP_UNITS_INCLUDE_CPP_UNITS_TYPES_PHYSICALQUANTITY_HPP
31 template<
typename BaseDimensionality>
32 class PhysicalQuantity :
private DryChem::CompletelyComparable<PhysicalQuantity<BaseDimensionality>>
57 return lhs.magnitude == rhs.magnitude;
63 return lhs.magnitude < rhs.magnitude;
95 template<
typename T,
typename = std::enable_if_t<std::is_arithmetic_v<T>>>
101 template<
typename T,
typename = std::enable_if_t<std::is_arithmetic_v<T>>>
104 magnitude *=
static_cast<long double>(rhs);
114 template<
typename T,
typename = std::enable_if_t<std::is_arithmetic_v<T>>>
120 template<
typename T,
typename = std::enable_if_t<std::is_arithmetic_v<T>>>
123 magnitude /=
static_cast<long double>(rhs);
141 template<
int L1,
int M1,
int T1,
int I1,
int Th1,
int N1,
int J1,
142 int L2,
int M2,
int T2,
int I2,
int Th2,
int N2,
int J2>
147 lhs.getMagnitude() * rhs.getMagnitude());
150 template<
int L,
int M,
int T,
int I,
int Th,
int N,
int J>
156 template<
int L1,
int M1,
int T1,
int I1,
int Th1,
int N1,
int J1,
157 int L2,
int M2,
int T2,
int I2,
int Th2,
int N2,
int J2>
162 lhs.getMagnitude() / rhs.getMagnitude());
165 template<
int L,
int M,
int T,
int I,
int Th,
int N,
int J>
Definition physicalQuantity.hpp:33
constexpr auto operator-() noexcept
Definition physicalQuantity.hpp:89
constexpr auto operator/=(const PhysicalQuantity< Dimensionality<> > &rhs) noexcept
Definition physicalQuantity.hpp:127
constexpr PhysicalQuantity(const std::string &Magnitude)
Definition physicalQuantity.hpp:48
constexpr long double getMagnitude() const noexcept
Definition physicalQuantity.hpp:50
constexpr PhysicalQuantity() noexcept=default
constexpr auto operator*=(T rhs) noexcept
Definition physicalQuantity.hpp:102
typename Dimensionality<>::Type DimensionalityType
Definition physicalQuantity.hpp:38
constexpr void setMagnitude(long double Magnitude) noexcept
Definition physicalQuantity.hpp:51
long double magnitude
Definition physicalQuantity.hpp:35
constexpr friend bool operator==(const PhysicalQuantity< BaseDimensionality > &lhs, const PhysicalQuantity< BaseDimensionality > &rhs) noexcept
Comparison Operators.
Definition physicalQuantity.hpp:54
constexpr auto operator-(const PhysicalQuantity< BaseDimensionality > &rhs) const noexcept
Definition physicalQuantity.hpp:84
constexpr auto operator+=(const PhysicalQuantity< BaseDimensionality > &rhs) noexcept
Arithmetic Operators.
Definition physicalQuantity.hpp:67
constexpr friend std::ostream & operator<<(std::ostream &stream, const PhysicalQuantity< BaseDimensionality > &rhs)
Output Stream Operators.
Definition physicalQuantity.hpp:134
constexpr auto operator*(T rhs) const noexcept
Definition physicalQuantity.hpp:96
constexpr auto operator/=(T rhs) noexcept
Definition physicalQuantity.hpp:121
constexpr auto operator/(T rhs) const noexcept
Definition physicalQuantity.hpp:115
constexpr auto operator-=(const PhysicalQuantity< BaseDimensionality > &rhs) noexcept
Definition physicalQuantity.hpp:78
constexpr auto operator*=(const PhysicalQuantity< Dimensionality<> > &rhs) noexcept
Definition physicalQuantity.hpp:108
constexpr friend bool operator<(const PhysicalQuantity< BaseDimensionality > &lhs, const PhysicalQuantity< BaseDimensionality > &rhs) noexcept
Definition physicalQuantity.hpp:60
constexpr auto operator+(const PhysicalQuantity< BaseDimensionality > &rhs) const noexcept
Definition physicalQuantity.hpp:73
Definition basicMath.hpp:17
constexpr auto operator/(const PhysicalQuantity< Dimensionality< L1, M1, T1, I1, Th1, N1, J1 > > &lhs, const PhysicalQuantity< Dimensionality< L2, M2, T2, I2, Th2, N2, J2 > > &rhs) noexcept
Definition physicalQuantity.hpp:158
constexpr auto operator*(const PhysicalQuantity< Dimensionality< L1, M1, T1, I1, Th1, N1, J1 > > &lhs, const PhysicalQuantity< Dimensionality< L2, M2, T2, I2, Th2, N2, J2 > > &rhs) noexcept
Definition physicalQuantity.hpp:143
Definition dimensionality.hpp:27