Go to the documentation of this file.
25 #include "spdlog/fmt/ostr.h"
26 #include "spdlog/spdlog.h"
39 #define AD_PHYSICS_PROBABILITY_THROWS_EXCEPTION 1
41 #if SAFE_DATATYPES_EXPLICIT_CONVERSION
45 #define _AD_PHYSICS_PROBABILITY_EXPLICIT_CONVERSION_ explicit
50 #define _AD_PHYSICS_PROBABILITY_EXPLICIT_CONVERSION_
84 : mProbability(std::numeric_limits<double>::quiet_NaN())
94 : mProbability(iProbability)
165 return (mProbability > other.mProbability) &&
operator!=(other);
181 return (mProbability < other.mProbability) &&
operator!=(other);
197 return ((mProbability > other.mProbability) ||
operator==(other));
213 return ((mProbability < other.mProbability) ||
operator==(other));
230 Probability const result(mProbability + other.mProbability);
249 mProbability += other.mProbability;
268 Probability const result(mProbability - other.mProbability);
287 mProbability -= other.mProbability;
323 Probability const result(
operator/(scalarProbability));
343 double const result = mProbability / other.mProbability;
383 auto const valueClass = std::fpclassify(mProbability);
384 return ((valueClass == FP_NORMAL) || (valueClass == FP_ZERO)) && (
cMinValue <= mProbability)
398 spdlog::info(
"ensureValid(::ad::physics::Probability)>> {} value out of range", *
this);
399 #if (AD_PHYSICS_PROBABILITY_THROWS_EXCEPTION == 1)
400 throw std::out_of_range(
"Probability value out of range");
416 spdlog::info(
"ensureValid(::ad::physics::Probability)>> {} value is zero", *
this);
417 #if (AD_PHYSICS_PROBABILITY_THROWS_EXCEPTION == 1)
418 throw std::out_of_range(
"Probability value is zero");
469 return value.operator*(other);
480 inline ::ad::physics::Probability
fabs(const ::ad::physics::Probability other)
500 static inline ::ad::physics::Probability
lowest()
502 return ::ad::physics::Probability::getMin();
507 static inline ::ad::physics::Probability
max()
509 return ::ad::physics::Probability::getMax();
515 static inline ::ad::physics::Probability
epsilon()
517 return ::ad::physics::Probability::getPrecision();
526 #ifndef GEN_GUARD_AD_PHYSICS_PROBABILITY
527 #define GEN_GUARD_AD_PHYSICS_PROBABILITY
548 return os << double(_value);
560 return to_string(
static_cast<double>(value));
563 #endif // GEN_GUARD_AD_PHYSICS_PROBABILITY
bool operator<=(const Probability &other) const
standard comparison operator
Definition: Probability.hpp:209
bool operator>=(const Probability &other) const
standard comparison operator
Definition: Probability.hpp:193
namespace ad
Definition: Acceleration.hpp:30
#define _AD_PHYSICS_PROBABILITY_EXPLICIT_CONVERSION_
Enable/Disable explicit conversion. Currently set to "implicit conversion allowed".
Definition: Probability.hpp:50
static inline ::ad::physics::Probability lowest()
Definition: Probability.hpp:500
static Probability getMin()
get minimum valid Probability (i.e. cMinValue)
Definition: Probability.hpp:426
static const double cMaxValue
constant defining the maximum valid Probability value (used in isValid())
Definition: Probability.hpp:69
double operator/(const Probability &other) const
standard arithmetic operator
Definition: Probability.hpp:339
Probability & operator+=(const Probability &other)
standard arithmetic operator
Definition: Probability.hpp:245
static inline ::ad::physics::Probability epsilon()
Definition: Probability.hpp:515
Probability operator+(const Probability &other) const
standard arithmetic operator
Definition: Probability.hpp:226
static const double cPrecisionValue
constant defining the assumed Probability value accuracy (used in comparison operator==(),...
Definition: Probability.hpp:75
bool operator!=(const Probability &other) const
standard comparison operator
Definition: Probability.hpp:147
static inline ::ad::physics::Probability max()
Definition: Probability.hpp:507
bool operator>(const Probability &other) const
standard comparison operator
Definition: Probability.hpp:161
_AD_PHYSICS_PROBABILITY_EXPLICIT_CONVERSION_ Probability(double const iProbability)
standard constructor
Definition: Probability.hpp:93
void ensureValid() const
ensure that the Probability is valid
Definition: Probability.hpp:394
Probability operator-(const Probability &other) const
standard arithmetic operator
Definition: Probability.hpp:264
inline ::ad::physics::Probability operator*(const double &other, ::ad::physics::Probability const &value)
standard arithmetic operator
Definition: Probability.hpp:467
DataType Probability.
Definition: Probability.hpp:58
Probability operator*(const double &scalar) const
standard arithmetic operator
Definition: Probability.hpp:302
bool operator==(const Probability &other) const
standard comparison operator
Definition: Probability.hpp:133
Probability & operator=(const Probability &other)=default
standard assignment operator
Probability operator-=(const Probability &other)
standard arithmetic operator
Definition: Probability.hpp:283
Probability operator/(const double &scalar) const
standard arithmetic operator
Definition: Probability.hpp:320
inline ::ad::physics::Weight fabs(const ::ad::physics::Weight other)
overload of the std::fabs for Weight
Definition: Weight.hpp:480
inline ::ad::physics::Acceleration fabs(const ::ad::physics::Acceleration other)
overload of the std::fabs for Acceleration
Definition: Acceleration.hpp:481
Probability()
default constructor
Definition: Probability.hpp:83
bool operator<(const Probability &other) const
standard comparison operator
Definition: Probability.hpp:177
std::string to_string(::ad::physics::Acceleration const &value)
overload of the std::to_string for Acceleration
Definition: Acceleration.hpp:559
static Probability getMax()
get maximum valid Probability (i.e. cMaxValue)
Definition: Probability.hpp:434
Probability operator-() const
standard arithmetic operator
Definition: Probability.hpp:355
void ensureValidNonZero() const
ensure that the Probability is valid and non zero
Definition: Probability.hpp:411
bool isValid() const
Definition: Probability.hpp:381
static const double cMinValue
constant defining the minimum valid Probability value (used in isValid())
Definition: Probability.hpp:64
std::ostream & operator<<(std::ostream &os, Acceleration const &_value)
standard ostream operator
Definition: Acceleration.hpp:547
static Probability getPrecision()
get assumed accuracy of Probability (i.e. cPrecisionValue)
Definition: Probability.hpp:442