# Crate extended_rational [−] [src]

Provides implementations of high-accuracy projectively-extended rational numbers and macros for creating them

Projectively-extended rationals differ from normal rationals because they have a single, signless infinity and a single, signless zero. This means that `1/0` can be defined as equal to `∞` and `1/∞` equal to `0`.

# Infinity

For unsigned numbers, `∞` is greater than every number, whereas with signed numbers, `∞` is not comparable to any number but itself. This is because `∞` equals `-∞` so no ordering can exist.

# NaN

`∞ + ∞`, `∞ - ∞`, `∞ * 0`, `0 * ∞`, `∞ / ∞`, and `0 / 0` are all `NaN`

A value of `NaN` in any operation always returns `NaN`. `NaN` is not ordered and is not equal to any number, including itself.

# Panics

No operation should ever panic. Operations that overflow round each input to a simpler fraction until they can succeed. Any invalid operations should return `NaN` instead of panicking.

## Macros

 ratio A macro for creating a new signed rational using a given ratio or decimal uratio A macro for creating a new unsigned rational using a given ratio or decimal

## Structs

 Rational A type representing a signed projectively-extended rational number URational A type representing an unsigned projectively-extended rational number

## Functions

 gcd Returns the greatest common divisor of two numbers. lcm Returns the least common multiple of two numbers or `None` if the calculation overflows.