rational

Rational Number Arithmetic

Functions

FunctionDescription
_rat_gcdInternal: GCD (Euclidean algorithm).
_rat_absInternal: absolute value.
rat_newCreate rational number, auto-simplified.
rat_addAdd: a/b + c/d = (ad + bc) / bd.
rat_subSubtract: a/b - c/d = (ad - bc) / bd.
rat_mulMultiply: (a/b) * (c/d) = ac / bd.
rat_divDivide: (a/b) / (c/d) = ad / bc.
rat_cmpCompare: returns -1, 0, or 1.
rat_eqEquality check.
rat_to_i64Truncated integer value (num / den).
rat_numNumerator.
rat_denDenominator.
rat_is_integerCheck if integer (den == 1).
rat_absAbsolute value.
rat_negateNegate.
_rat_write_intInternal: write integer to buffer.
rat_to_strFormat as “num/den” string. Returns length.

Details

_rat_gcd

fn _rat_gcd(a: i64, b: i64) -> i64

Internal: GCD (Euclidean algorithm).

_rat_abs

fn _rat_abs(x: i64) -> i64

Internal: absolute value.

rat_new

fn rat_new(num: i64, den: i64) -> &i64

Create rational number, auto-simplified.

rat_add

fn rat_add(a: &i64, b: &i64) -> &i64

Add: a/b + c/d = (ad + bc) / bd.

rat_sub

fn rat_sub(a: &i64, b: &i64) -> &i64

Subtract: a/b - c/d = (ad - bc) / bd.

rat_mul

fn rat_mul(a: &i64, b: &i64) -> &i64

Multiply: (a/b) * (c/d) = ac / bd.

rat_div

fn rat_div(a: &i64, b: &i64) -> &i64

Divide: (a/b) / (c/d) = ad / bc.

rat_cmp

fn rat_cmp(a: &i64, b: &i64) -> i64

Compare: returns -1, 0, or 1.

rat_eq

fn rat_eq(a: &i64, b: &i64) -> i64

Equality check.

rat_to_i64

fn rat_to_i64(a: &i64) -> i64

Truncated integer value (num / den).

rat_num

fn rat_num(a: &i64) -> i64

Numerator.

rat_den

fn rat_den(a: &i64) -> i64

Denominator.

rat_is_integer

fn rat_is_integer(a: &i64) -> i64

Check if integer (den == 1).

rat_abs

fn rat_abs(a: &i64) -> &i64

Absolute value.

rat_negate

fn rat_negate(a: &i64) -> &i64

Negate.

_rat_write_int

fn _rat_write_int(val: i64, out: &i8, off: i64) -> i64

Internal: write integer to buffer.

rat_to_str

fn rat_to_str(a: &i64, out: &i8) -> i64

Format as “num/den” string. Returns length.