47 if(_den != 0) simplify();
51 bool isValid()
const {
return _den != 0; }
60 T lcm = std::lcm(_den,
rhs._den);
72 T lcm = std::lcm(_den,
rhs._den);
103 return _num ==
rhs._num && _den ==
rhs._den;
108 return !(*
this ==
rhs);
123 return static_cast<double>(_num) /
static_cast<double>(_den);
141 T gcd = std::gcd(_num, _den);
Dynamic array container wrapping std::vector.
Definition list.h:40
Rational number with numerator and denominator.
Definition rational.h:36
Rational operator+(const Rational &rhs) const
Adds two rationals.
Definition rational.h:58
bool operator==(const Rational &rhs) const
Equality comparison.
Definition rational.h:102
Rational operator/(const Rational &rhs) const
Divides two rationals.
Definition rational.h:94
Rational operator*(const Rational &rhs) const
Multiplies two rationals.
Definition rational.h:82
bool isValid() const
Returns true if the denominator is non-zero.
Definition rational.h:51
Rational(T n=0, T d=1)
Constructs a rational number.
Definition rational.h:46
T numerator() const
Returns the numerator.
Definition rational.h:112
double toDouble() const
Converts to double.
Definition rational.h:121
bool operator!=(const Rational &rhs) const
Inequality comparison.
Definition rational.h:107
String toString() const
Converts to a String in "num/den" format.
Definition rational.h:127
T denominator() const
Returns the denominator.
Definition rational.h:115
Rational operator-(const Rational &rhs) const
Subtracts two rationals.
Definition rational.h:70
Encoding-aware string class with copy-on-write semantics.
Definition string.h:35
static String dec(const T &val, int padding=0, char padchar=' ')
Formats a value as a decimal string with optional padding.
Definition string.h:167
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19