Go to the documentation of this file.
25 #include "spdlog/fmt/ostr.h"
26 #include "spdlog/spdlog.h"
39 #define AD_PHYSICS_DISTANCESQUARED_THROWS_EXCEPTION 1
41 #if SAFE_DATATYPES_EXPLICIT_CONVERSION
45 #define _AD_PHYSICS_DISTANCESQUARED_EXPLICIT_CONVERSION_ explicit
50 #define _AD_PHYSICS_DISTANCESQUARED_EXPLICIT_CONVERSION_
93 : mDistanceSquared(std::numeric_limits<double>::quiet_NaN())
103 : mDistanceSquared(iDistanceSquared)
146 return std::fabs(mDistanceSquared - other.mDistanceSquared) <
cPrecisionValue;
174 return (mDistanceSquared > other.mDistanceSquared) &&
operator!=(other);
190 return (mDistanceSquared < other.mDistanceSquared) &&
operator!=(other);
206 return ((mDistanceSquared > other.mDistanceSquared) ||
operator==(other));
222 return ((mDistanceSquared < other.mDistanceSquared) ||
operator==(other));
239 DistanceSquared const result(mDistanceSquared + other.mDistanceSquared);
258 mDistanceSquared += other.mDistanceSquared;
277 DistanceSquared const result(mDistanceSquared - other.mDistanceSquared);
296 mDistanceSquared -= other.mDistanceSquared;
352 double const result = mDistanceSquared / other.mDistanceSquared;
380 return mDistanceSquared;
392 auto const valueClass = std::fpclassify(mDistanceSquared);
393 return ((valueClass == FP_NORMAL) || (valueClass == FP_ZERO)) && (
cMinValue <= mDistanceSquared)
407 spdlog::info(
"ensureValid(::ad::physics::DistanceSquared)>> {} value out of range", *
this);
408 #if (AD_PHYSICS_DISTANCESQUARED_THROWS_EXCEPTION == 1)
409 throw std::out_of_range(
"DistanceSquared value out of range");
425 spdlog::info(
"ensureValid(::ad::physics::DistanceSquared)>> {} value is zero", *
this);
426 #if (AD_PHYSICS_DISTANCESQUARED_THROWS_EXCEPTION == 1)
427 throw std::out_of_range(
"DistanceSquared value is zero");
460 double mDistanceSquared;
478 return value.operator*(other);
489 inline ::ad::physics::DistanceSquared
fabs(const ::ad::physics::DistanceSquared other)
509 static inline ::ad::physics::DistanceSquared
lowest()
511 return ::ad::physics::DistanceSquared::getMin();
516 static inline ::ad::physics::DistanceSquared
max()
518 return ::ad::physics::DistanceSquared::getMax();
524 static inline ::ad::physics::DistanceSquared
epsilon()
526 return ::ad::physics::DistanceSquared::getPrecision();
542 #ifndef GEN_GUARD_AD_PHYSICS_DISTANCESQUARED
543 #define GEN_GUARD_AD_PHYSICS_DISTANCESQUARED
564 return os << double(_value);
576 return to_string(
static_cast<double>(value));
579 #endif // GEN_GUARD_AD_PHYSICS_DISTANCESQUARED
static DistanceSquared getMin()
get minimum valid DistanceSquared (i.e. cMinValue)
Definition: DistanceSquared.hpp:435
namespace ad
Definition: Acceleration.hpp:30
DataType Distance.
Definition: Distance.hpp:67
static inline ::ad::physics::DistanceSquared epsilon()
Definition: DistanceSquared.hpp:524
DistanceSquared operator*(const double &scalar) const
standard arithmetic operator
Definition: DistanceSquared.hpp:311
DataType DistanceSquared.
Definition: DistanceSquared.hpp:67
bool operator>=(const DistanceSquared &other) const
standard comparison operator
Definition: DistanceSquared.hpp:202
DistanceSquared()
default constructor
Definition: DistanceSquared.hpp:92
DistanceSquared operator-(const DistanceSquared &other) const
standard arithmetic operator
Definition: DistanceSquared.hpp:273
#define _AD_PHYSICS_DISTANCESQUARED_EXPLICIT_CONVERSION_
Enable/Disable explicit conversion. Currently set to "implicit conversion allowed".
Definition: DistanceSquared.hpp:50
bool isValid() const
Definition: DistanceSquared.hpp:390
DistanceSquared & operator=(const DistanceSquared &other)=default
standard assignment operator
bool operator>(const DistanceSquared &other) const
standard comparison operator
Definition: DistanceSquared.hpp:170
static DistanceSquared getPrecision()
get assumed accuracy of DistanceSquared (i.e. cPrecisionValue)
Definition: DistanceSquared.hpp:451
DistanceSquared operator/(const double &scalar) const
standard arithmetic operator
Definition: DistanceSquared.hpp:329
static DistanceSquared getMax()
get maximum valid DistanceSquared (i.e. cMaxValue)
Definition: DistanceSquared.hpp:443
static inline ::ad::physics::DistanceSquared max()
Definition: DistanceSquared.hpp:516
static const double cMinValue
constant defining the minimum valid DistanceSquared value (used in isValid())
Definition: DistanceSquared.hpp:73
static const double cMaxValue
constant defining the maximum valid DistanceSquared value (used in isValid())
Definition: DistanceSquared.hpp:78
DistanceSquared operator-() const
standard arithmetic operator
Definition: DistanceSquared.hpp:364
double operator/(const DistanceSquared &other) const
standard arithmetic operator
Definition: DistanceSquared.hpp:348
bool operator==(const DistanceSquared &other) const
standard comparison operator
Definition: DistanceSquared.hpp:142
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
bool operator<=(const DistanceSquared &other) const
standard comparison operator
Definition: DistanceSquared.hpp:218
std::string to_string(::ad::physics::Acceleration const &value)
overload of the std::to_string for Acceleration
Definition: Acceleration.hpp:559
DistanceSquared & operator+=(const DistanceSquared &other)
standard arithmetic operator
Definition: DistanceSquared.hpp:254
void ensureValidNonZero() const
ensure that the DistanceSquared is valid and non zero
Definition: DistanceSquared.hpp:420
bool operator<(const DistanceSquared &other) const
standard comparison operator
Definition: DistanceSquared.hpp:186
static const double cPrecisionValue
constant defining the assumed DistanceSquared value accuracy (used in comparison operator==(),...
Definition: DistanceSquared.hpp:84
std::ostream & operator<<(std::ostream &os, Acceleration const &_value)
standard ostream operator
Definition: Acceleration.hpp:547
void ensureValid() const
ensure that the DistanceSquared is valid
Definition: DistanceSquared.hpp:403
DistanceSquared operator+(const DistanceSquared &other) const
standard arithmetic operator
Definition: DistanceSquared.hpp:235
static inline ::ad::physics::DistanceSquared lowest()
Definition: DistanceSquared.hpp:509
inline ::ad::physics::DistanceSquared operator*(const double &other, ::ad::physics::DistanceSquared const &value)
standard arithmetic operator
Definition: DistanceSquared.hpp:476
DistanceSquared operator-=(const DistanceSquared &other)
standard arithmetic operator
Definition: DistanceSquared.hpp:292
_AD_PHYSICS_DISTANCESQUARED_EXPLICIT_CONVERSION_ DistanceSquared(double const iDistanceSquared)
standard constructor
Definition: DistanceSquared.hpp:102
bool operator!=(const DistanceSquared &other) const
standard comparison operator
Definition: DistanceSquared.hpp:156