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 None if the calculation overflows.