Function sub [src]

rma = a - b. rma, a and b may be aliases. However, it is more efficient if rma does not alias a or b. Returns an error if memory could not be allocated.

Prototype

pub fn sub(rma: *Rational, a: Rational, b: Rational) !void

Parameters

rma: *Rationala: Rationalb: Rational

Source

pub fn sub(rma: *Rational, a: Rational, b: Rational) !void { var r = rma; var aliased = rma.p.limbs.ptr == a.p.limbs.ptr or rma.p.limbs.ptr == b.p.limbs.ptr; var sr: Rational = undefined; if (aliased) { sr = try Rational.init(rma.p.allocator); r = &sr; aliased = true; } defer if (aliased) { rma.swap(r); r.deinit(); }; try r.p.mul(&a.p, &b.q); try r.q.mul(&b.p, &a.q); try r.p.sub(&r.p, &r.q); try r.q.mul(&a.q, &b.q); try r.reduce(); }