# 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.

# Additional Features

For use with the bit manager crate, add this to your `Cargo.toml`

:

```
[features]
default = ["extended-rational/bit_manager_enabled"]
```

## 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 |