Template Struct Fraction

Inheritance Relationships

Base Type

  • public boost::totally_ordered< Fraction< Z >, boost::totally_ordered2< Fraction< Z >, Z, boost::multipliable2< Fraction< Z >, Z, boost::dividable2< Fraction< Z >, Z > > > >

Template Parameter Order

  1. typename Z

Struct Documentation

template<typename Z>
struct Fraction : public boost::totally_ordered<Fraction<Z>, boost::totally_ordered2<Fraction<Z>, Z, boost::multipliable2<Fraction<Z>, Z, boost::dividable2<Fraction<Z>, Z>>>>

Public Types

using _Self = Fraction<Z>

Public Functions

inline constexpr Fraction(const Z &numerator, const Z &denominator)

Construct a new Fraction object.

Parameters
  • numerator[in]

  • denominator[in]

inline explicit constexpr Fraction(const Z &numerator)

Construct a new Fraction object.

Parameters

numerator[in]

constexpr Fraction() = default

Construct a new Fraction object.

inline constexpr const Z &numerator() const
Returns

const Z&

inline constexpr const Z &denominator() const
Returns

const Z&

inline constexpr _Self abs() const
Returns

_Self

inline constexpr void reciprocal()
inline constexpr _Self operator-() const
Returns

_Self

inline constexpr _Self operator+(const _Self &frac) const
Parameters

frac[in]

Returns

_Self

inline constexpr _Self operator-(const _Self &frac) const
Parameters

frac[in]

Returns

_Self

inline constexpr _Self operator*(const _Self &frac) const
Parameters

frac[in]

Returns

_Self

inline constexpr _Self operator/(_Self frac) const
Parameters

frac[in]

Returns

_Self

inline constexpr _Self operator+(const Z &i) const
Parameters

i[in]

Returns

_Self

inline constexpr _Self operator-(const Z &i) const
Parameters

i[in]

Returns

_Self

inline constexpr _Self operator*(const Z &i) const
Parameters

i[in]

Returns

_Self

inline constexpr _Self operator/(const Z &i) const
Parameters

i[in]

Returns

_Self

inline constexpr _Self operator+=(const _Self &frac)
Parameters

frac[in]

Returns

_Self

inline constexpr _Self operator-=(const _Self &frac)
Parameters

frac[in]

Returns

_Self

inline constexpr _Self operator*=(const _Self &frac)
Parameters

frac[in]

Returns

_Self

inline constexpr _Self operator/=(const _Self &frac)
Parameters

frac[in]

Returns

_Self

inline constexpr _Self operator+=(const Z &i)
Parameters

i[in]

Returns

_Self

inline constexpr _Self operator-=(const Z &i)
Parameters

i[in]

Returns

_Self

inline constexpr _Self operator*=(const Z &i)
Parameters

i[in]

Returns

_Self

inline constexpr _Self operator/=(const Z &i)
Parameters

i[in]

Returns

_Self

template<typename U>
inline constexpr auto cmp(const Fraction<U> &frac) const

Three way comparison.

Parameters

frac[in]

Returns

auto

template<typename U>
inline constexpr bool operator==(const Fraction<U> &frac) const
Template Parameters

U

Parameters

frac[in]

Returns

true

Returns

false

template<typename U>
inline constexpr bool operator!=(const Fraction<U> &frac) const
Template Parameters

U

Parameters

frac[in]

Returns

true

Returns

false

template<typename U>
inline constexpr bool operator<(const Fraction<U> &frac) const
Template Parameters

U

Parameters

frac[in]

Returns

true

Returns

false

template<typename U>
inline constexpr bool operator>(const Fraction<U> &frac) const
Template Parameters

U

Parameters

frac[in]

Returns

true

Returns

false

template<typename U>
inline constexpr bool operator<=(const Fraction<U> &frac) const
Template Parameters

U

Parameters

frac[in]

Returns

true

Returns

false

template<typename U>
inline constexpr bool operator>=(const Fraction<U> &frac) const
Template Parameters

U

Parameters

frac[in]

Returns

true

Returns

false

inline constexpr auto cmp(const Z &c) const
Parameters

c[in]

Returns

auto

inline constexpr bool operator==(const Z &c) const
Parameters

c[in]

Returns

true

Returns

false

inline constexpr bool operator!=(const Z &c) const
Parameters

c[in]

Returns

true

Returns

false

inline constexpr bool operator<(const Z &c) const
Parameters

c[in]

Returns

true

Returns

false

inline constexpr bool operator>(const Z &c) const
Parameters

c[in]

Returns

true

Returns

false

inline constexpr bool operator<=(const Z &c) const
Parameters

c[in]

Returns

true

Returns

false

inline constexpr bool operator>=(const Z &c) const
Parameters

c[in]

Returns

true

Returns

false

inline explicit constexpr operator double()
Returns

double

inline constexpr Fraction(Z &&numerator, Z &&denominator) noexcept

Construct a new Fraction object.

Parameters
  • numerator[in]

  • denominator[in]

inline constexpr Fraction(const Z &numerator, const Z &denominator)

Construct a new Fraction object.

Parameters
  • numerator[in]

  • denominator[in]

inline constexpr void normalize()
inline explicit constexpr Fraction(Z &&numerator) noexcept

Construct a new Fraction object.

Parameters

numerator[in]

inline explicit constexpr Fraction(const Z &numerator)

Construct a new Fraction object.

Parameters

numerator[in]

inline constexpr auto numerator() const -> const Z&
Returns

const Z&

inline constexpr auto denominator() const -> const Z&
Returns

const Z&

inline constexpr auto abs() const -> Fraction
Returns

Fraction

inline constexpr void reciprocal()
inline constexpr auto operator-() const -> Fraction
Returns

Fraction

inline constexpr auto operator+(const Fraction &frac) const -> Fraction
Parameters

frac[in]

Returns

Fraction

inline constexpr auto operator-(const Fraction &frac) const -> Fraction
Parameters

frac[in]

Returns

Fraction

inline constexpr auto operator*(const Fraction &frac) const -> Fraction
Parameters

frac[in]

Returns

Fraction

inline constexpr auto operator/(Fraction frac) const -> Fraction
Parameters

frac[in]

Returns

Fraction

inline constexpr auto operator+(const Z &i) const -> Fraction
Parameters

i[in]

Returns

Fraction

inline constexpr auto operator-(const Z &i) const -> Fraction
Parameters

i[in]

Returns

Fraction

inline constexpr auto operator+=(const Fraction &frac) -> Fraction&
Parameters
  • i[in]

  • i[in]

  • frac[in]

Returns

Fraction

Returns

Fraction

Returns

Fraction

inline constexpr auto operator-=(const Fraction &frac) -> Fraction&
Parameters

frac[in]

Returns

Fraction

inline constexpr auto operator*=(const Fraction &frac) -> Fraction&
Parameters

frac[in]

Returns

Fraction

inline constexpr auto operator/=(const Fraction &frac) -> Fraction&
Parameters

frac[in]

Returns

Fraction

inline constexpr auto operator+=(const Z &i) -> Fraction&
Parameters

i[in]

Returns

Fraction

inline constexpr auto operator-=(const Z &i) -> Fraction&
Parameters

i[in]

Returns

Fraction

inline constexpr auto operator*=(const Z &i) -> Fraction&
Parameters

i[in]

Returns

Fraction

inline constexpr auto operator/=(const Z &i) -> Fraction&
Parameters

i[in]

Returns

Fraction

template<typename U>
inline constexpr auto cmp(const Fraction<U> &frac) const

Three way comparison.

Parameters

frac[in]

Returns

auto

inline constexpr auto operator==(const Fraction<Z> &rhs) const -> bool
inline constexpr auto operator<(const Fraction<Z> &rhs) const -> bool
inline constexpr auto operator==(const Z &rhs) const -> bool
inline constexpr auto operator<(const Z &rhs) const -> bool
inline constexpr auto operator>(const Z &rhs) const -> bool

Public Members

Z _numerator
Z _denominator

Friends

inline friend constexpr _Self operator+(const Z &c, const _Self &frac)
Parameters
  • c[in]

  • frac[in]

Returns

Fraction<Z>

inline friend constexpr _Self operator-(const Z &c, const _Self &frac)
Parameters
  • c[in]

  • frac[in]

Returns

Fraction<Z>

inline friend constexpr _Self operator*(const Z &c, const _Self &frac)
Parameters
  • c[in]

  • frac[in]

Returns

Fraction<Z>

inline friend constexpr _Self operator+(int &&c, const _Self &frac)
Parameters
  • c[in]

  • frac[in]

  • c[in]

  • frac[in]

  • c[in]

  • frac[in]

Returns

Fraction<Z>

Returns

Fraction<Z>

Returns

Fraction<Z>

inline friend constexpr _Self operator-(int &&c, const _Self &frac)
Parameters
  • c[in]

  • frac[in]

Returns

Fraction<Z>

inline friend constexpr _Self operator*(int &&c, const _Self &frac)
Parameters
  • c[in]

  • frac[in]

Returns

Fraction<Z>

template<typename _Stream>
inline friend _Stream &operator<<(_Stream &os, const _Self &frac)
Template Parameters
  • _Stream

  • Z

Parameters
  • os[in]

  • frac[in]

Returns

_Stream&