25 #include <biogears/cdm/utils/unitconversion/UnitConversionEngine.h>
26 #include <biogears/cdm/utils/unitconversion/CompoundUnit.h>
39 CPScalar(
double val,
const char* unitSpec);
41 CPScalar(
double val,
const std::string& unitSpec);
55 CPScalar(
const std::string& unitSpec);
59 : m_dValue(src.m_dValue)
126 return m_dValue == newVal;
134 return !(*
this == rhs);
145 return m_dValue < newVal;
152 return m_dValue > newVal;
159 return m_dValue <= newVal;
166 return m_dValue >= newVal;
196 operator bool()
const
198 return m_dValue != 0.0;
203 return static_cast<int>(
static_cast<double>(*this));
206 operator float()
const
208 return static_cast<float>(
static_cast<double>(*this));
211 operator double()
const
216 if (*unitless.
GetDimension() == *m_CCU.GetDimension()) {
224 throw "PScalar value can't be cast to numeric unless already dimensionless!";
249 m_dValue = std::pow(m_dValue, pwr);
260 m_dValue = std::sqrt(m_dValue);
269 m_dValue = std::abs(m_dValue);
274 CPScalar& ConvertTo(
const char* unitSpec);
276 CPScalar& ConvertTo(
const std::string& unitSpec);
282 double newval = uce.
ConvertValue(m_dValue, m_CCU, newUnit);
291 return ConvertTo(target.
m_CCU);
296 return output << m_dValue <<
" " << m_CCU;
306 return m_CCU.IsDimensionless();
312 return m_CCU.IsDecibel();
347 return self.PrintSelf(output);
bool operator>=(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:127
bool operator<=(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:125
std::ostream & PrintSelf(std::ostream &output) const
Definition: PScalar.h:294
bool operator>=(const CPScalar &rhs) const
Definition: PScalar.h:162
CPScalar operator-(const CPScalar &rhs) const
Definition: PScalar.h:174
static CUnitConversionEngine & GetEngine(void)
Definition: UnitConversionEngine.cpp:97
CPScalar operator+(const CPScalar &rhs) const
Definition: PScalar.h:169
CCompoundUnit pow(const CCompoundUnit &baseref, CCompoundUnitElement::ExponentType exp)
Definition: CompoundUnit.h:269
CPScalar & SQRoot()
Definition: PScalar.h:256
CPScalar & operator=(const CPScalar &rhs)
Definition: PScalar.h:66
CPScalar(const CPScalar &src)
Definition: PScalar.h:58
CPScalar & ConvertTo(const CPScalar &target)
Definition: PScalar.h:289
SEScalar operator+(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:120
CPScalar & ConvertTo(const CCompoundUnit &newUnit)
Definition: PScalar.h:279
double m_dValue
Definition: PScalar.h:321
bool operator!=(const CPScalar &rhs) const
Definition: PScalar.h:132
CPScalar & ConvertTo(const char *unitSpec)
Definition: PScalar.cpp:77
CPScalar & Abs()
Definition: PScalar.h:267
const CUnitDimension * GetDimension() const
Definition: CompoundUnit.cpp:281
CPScalar & operator*=(CPScalar &lhs, const T &rhs)
Definition: PScalar.h:376
CPScalar & operator+=(const CPScalar &rhs)
Definition: PScalar.h:104
bool IsDimensionless() const
Definition: PScalar.h:304
bool operator!=(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:129
CPScalar(double val)
Definition: PScalar.h:44
double ConvertValueInterval(const double &value, const CCompoundUnit &fromUnit, const CCompoundUnit &toUnit) const
Definition: UnitConversionEngine.cpp:469
SEScalar operator/(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:122
Definition: CompoundUnit.h:59
SEScalar operator*(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:123
std::ostream & operator<<(std::ostream &out, const SEConsciousRespirationCommand &c)
Definition: SEConsciousRespirationCommand.h:48
CCompoundUnit & Raise(CCompoundUnitElement::ExponentType)
Definition: CompoundUnit.cpp:599
const std::string unitless
Definition: SEScalar.cpp:30
CPScalar & operator/=(const CPScalar &rhs)
Definition: PScalar.h:82
CPScalar abs(const CPScalar &argref)
Definition: PScalar.h:340
CPScalar operator/(const CPScalar &rhs) const
Definition: PScalar.h:94
CCompoundUnit m_CCU
Definition: PScalar.h:322
CPScalar operator()(const std::string &unitSpec) const
Definition: PScalar.h:239
bool operator==(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:128
bool IsSameType(const CPScalar &target) const
Definition: PScalar.h:299
bool operator>(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:126
bool operator<(const CPScalar &rhs) const
Definition: PScalar.h:141
CPScalar & operator-=(const CPScalar &rhs)
Definition: PScalar.h:112
CPScalar operator+() const
Definition: PScalar.h:179
bool operator<=(const CPScalar &rhs) const
Definition: PScalar.h:155
bool operator<(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:124
double GetValue() const
Definition: PScalar.h:229
Definition: UnitConversionEngine.h:36
bool IsDecible() const
Definition: PScalar.h:310
CPScalar & operator/=(CPScalar &lhs, const T &rhs)
Definition: PScalar.h:396
SEScalar operator-(double lhs, const SEScalar &rhs)
Definition: SEScalar.h:121
CPScalar()
Definition: PScalar.h:32
CPScalar & Raise(double pwr)
Definition: PScalar.h:247
CPScalar & operator*=(const CPScalar &rhs)
Definition: PScalar.h:75
CCompoundUnit sqrt(const CCompoundUnit &argref)
Definition: CompoundUnit.h:280
double ConvertValue(const double &value, const CCompoundUnit &fromUnit, const CCompoundUnit &toUnit) const
Definition: UnitConversionEngine.cpp:369
Definition: SEElectricalCircuit.h:18
CPScalar operator*(const CPScalar &rhs) const
Definition: PScalar.h:89
CPScalar & Negate(void)
Definition: PScalar.h:184
bool operator>(const CPScalar &rhs) const
Definition: PScalar.h:148
CPScalar operator-() const
Definition: PScalar.h:190
bool operator==(const CPScalar &rhs) const
Definition: PScalar.h:122