27template <std::
floating_po
int T>
53 T
value()
const {
return _value; }
61 _value += other._value;
67 _value -= other._value;
73 _value *= other._value;
79 _value /= other._value;
106 return std::isnan(_value);
111 return std::isinf(_value);
136 T tolerance = T{0.0002})
181 return std::sin( i.
value() );
186 return std::cos( i.
value() );
191 return std::tan( i.asStdComplex() );
196 return std::asin( i.asStdComplex() );
201 return std::acos( i.asStdComplex() );
206 return std::atan( i.asStdComplex() );
211 return std::sinh( i.asStdComplex() );
216 return std::cosh( i.asStdComplex() );
221 return std::tanh( i.asStdComplex() );
226 return std::asinh( i.asStdComplex() );
231 return std::acosh( i.asStdComplex() );
236 return std::atanh( i.asStdComplex() );
260template <std::
floating_po
int T>
301 _value += other.
value();
313 _value -= other.
value();
325 _value *= other.
value();
337 _value /= other.
value();
376 return std::isnan(_value);
381 return std::isinf(_value);
406 T tolerance = T{0.0002})
440 return { left.
value() + right };
445 return { left.
value() - right };
450 return { left.
value() * right };
455 return { left.
value() / right };
460 return { -input.
value() };
552constexpr BasicRadian<float>
operator ""_rad_F(
long double radians)
554 return BasicRadian<float>{
static_cast<float>(radians) };
557constexpr BasicRadian<float>
operator ""_radf(
long double radians)
559 return BasicRadian<float>{
static_cast<float>(radians) };
562constexpr BasicRadian<float>
operator ""_radF(
long double radians)
564 return BasicRadian<float>{
static_cast<float>(radians) };
567constexpr BasicRadian<double>
operator ""_rad(
long double radians)
569 return BasicRadian<double>{
static_cast<double>(radians) };
572constexpr BasicRadian<long double>
operator ""_rad_l(
long double radians)
574 return BasicRadian<long double>{radians};
577constexpr BasicRadian<long double>
operator ""_rad_L(
long double radians)
579 return BasicRadian<long double>{radians};
582constexpr BasicRadian<long double>
operator ""_radl(
long double radians)
584 return BasicRadian<long double>{radians};
587constexpr BasicRadian<long double>
operator ""_radL(
long double radians)
589 return BasicRadian<long double>{radians};
static constexpr T modulus()
constexpr BasicDegree()=default
Defaults to 0.
constexpr BasicDegree< T > & operator+=(const BasicDegree< T > &other)
constexpr BasicDegree< T > & operator*=(const BasicDegree< T > &other)
constexpr bool isInf() const
friend constexpr BasicDegree< T > operator/(const BasicDegree< T > &left, const BasicDegree< T > &right)
constexpr BasicDegree< T > & operator-=(const BasicDegree< T > &other)
friend constexpr BasicDegree< T > operator+(const BasicDegree< T > &left, const BasicDegree< T > &right)
static constexpr BasicDegree< T > zero()
friend constexpr BasicDegree< T > operator-(const BasicDegree< T > &left, const BasicDegree< T > &right)
constexpr BasicDegree(T value)
constexpr BasicDegree< T > & operator/=(const BasicDegree< T > &other)
friend constexpr BasicDegree< T > operator*(const BasicDegree< T > &left, const BasicDegree< T > &right)
constexpr BasicDegree< T > modulo() const
friend constexpr auto operator<=>(const BasicDegree< T > &left, const BasicDegree< T > &right)=default
constexpr BasicDegree(const BasicRadian< T > &value)
constexpr bool isNaN() const
T value_type
The underlying implementation type.
friend constexpr BasicRadian< T > operator-(const BasicRadian< T > &left, const BasicRadian< T > &right)
constexpr BasicRadian()=default
Defaults to 0.
friend BasicRadian< T > atanh(BasicRadian< T > i)
static constexpr BasicRadian< T > zero()
friend BasicRadian< T > cos(BasicRadian< T > i)
friend BasicRadian< T > asinh(BasicRadian< T > i)
friend constexpr BasicRadian< T > operator/(const BasicRadian< T > &left, const BasicRadian< T > &right)
constexpr BasicRadian< T > & operator-=(const BasicRadian &other)
friend constexpr auto operator<=>(const BasicRadian< T > &left, const BasicRadian< T > &right)=default
constexpr bool isInf() const
friend BasicRadian< T > sin(BasicRadian< T > i)
friend BasicRadian< T > cosh(BasicRadian< T > i)
constexpr BasicRadian< T > & operator*=(const BasicRadian &other)
friend BasicRadian< T > atan2(BasicRadian< T > y, BasicRadian< T > x)
friend BasicRadian< T > sinh(BasicRadian< T > i)
friend BasicRadian< T > tan(BasicRadian< T > i)
friend BasicRadian< T > acosh(BasicRadian< T > i)
friend BasicRadian< T > asin(BasicRadian< T > i)
constexpr BasicRadian< T > & operator+=(const BasicRadian &other)
friend BasicRadian< T > atan(BasicRadian< T > i)
constexpr BasicRadian(T value)
friend BasicRadian< T > tanh(BasicRadian< T > i)
friend constexpr BasicRadian< T > operator+(const BasicRadian< T > &left, const BasicRadian< T > &right)
constexpr bool isNaN() const
friend constexpr BasicRadian< T > operator*(const BasicRadian< T > &left, const BasicRadian< T > &right)
constexpr BasicRadian< T > & operator/=(const BasicRadian &other)
T value_type
The underlying implementation type.
friend BasicRadian< T > acos(BasicRadian< T > i)
constexpr T DegreesToRadians(T degrees)
Convert degrees to radians.
constexpr T RadiansToDegrees(T radians)
Convert radians to degrees.
friend constexpr bool approximately_equal_to(const BasicRadian< T > &value_to_test, const BasicRadian< T > &value_it_should_be, T tolerance=T{0.0002})
friend constexpr bool approximately_equal_to(const BasicDegree< T > &value_to_test, const BasicDegree< T > &value_it_should_be, T tolerance=T{0.0002})