Rational
A module for rational numbers in Carp.
Fractions are expressed as pairs of integers: a numerator and a denominator. Mathematical operations and conversion primitives to and from integers and floating point numbers are provided.
(load "git@github.com:carpentry-org/rational@0.4")
(Rational.new 22 12) ; => (Rational 11/6)
(* (Rational.new 22 12) (Rational.new 1 6)) ; => (Rational 2/1)
(to-int (Rational.new 2 1)) ; => 2
(to-float (Rational.new 1 4)) ; => 0.25
(to-double (Rational.new 1 4)) ; => 0.25
denominator
(Fn [(Ref Rational a)] (Ref Int a))
gets the denominator property of a Rational.
div
(Fn [(Ref Rational a), (Ref Rational b)] Rational)
(div a b)
divides two Rationals a and b.
modulo
(Fn [(Ref Rational a), (Ref Rational b)] Rational)
(modulo a b)
calculates the modulo of two Rationals a and b.
mul
(Fn [(Ref Rational a), (Ref Rational b)] Rational)
(mul a b)
multiplies two Rationals a and b.
new
(Fn [Int, Int] Rational)
(new n d)
builds a Rational from a numerator n and a denominator d.
numerator
(Fn [(Ref Rational a)] (Ref Int a))
gets the numerator property of a Rational.
set-denominator
(Fn [Rational, Int] Rational)
sets the denominator property of a Rational.
set-denominator!
(Fn [(Ref Rational a), Int] ())
sets the denominator property of a Rational in place.
set-numerator!
(Fn [(Ref Rational a), Int] ())
sets the numerator property of a Rational in place.
str
(Fn [(Ref Rational a)] String)
(str r)
stringifies the Rational r. The format is
(Rational <numerator>/<denominator>).
sub
(Fn [(Ref Rational a), (Ref Rational b)] Rational)
(sub a b)
subtracts two Rationals a and b.
to-double
(Fn [(Ref Rational a)] Double)
(to-double r)
converts a Rational r to a Double.
This function might incur a precision loss.
to-float
(Fn [(Ref Rational a)] Float)
(to-float r)
converts a Rational r to a Float.
This function might incur a precision loss.
to-int
(Fn [(Ref Rational a)] Int)
(to-int r)
converts a Rational r to an Integer.
This function might incur a precision loss.
update-denominator
(Fn [Rational, (Ref (Fn [Int] Int a) b)] Rational)
updates the denominator property of a Rational using a function f.
update-numerator
(Fn [Rational, (Ref (Fn [Int] Int a) b)] Rational)
updates the numerator property of a Rational using a function f.