Repository
Current version released
3 years ago
modulo
modulo implements the mathematical modulo operation in TypeScript for Deno.
Motivation
JavaScript has no native support for true modulo. The %
operator works as
modulo for positive numbers, but not negative ones. For example, -1 % 3 = -1
compared to -1 mod 3 = 2
. If you need the latter, you can either use this
module, or memorize this modulo formula for JavaScript:
x mod n = ((x % n) + n) % n
mod.ts
The modulo
function calculates m = x mod n
:
import { modulo } from "https://deno.land/x/modulo/mod.ts";
const x = -1;
const n = 3;
const m = modulo(x, n);
const test = m === 2;
if (!test) throw new Error();
The quotient
function calculates q = floor(x / n)
.
import { modulo, quotient } from "https://deno.land/x/modulo/mod.ts";
const x = -1;
const n = 3;
const q = quotient(x, n);
const test = q === -1;
if (!test) throw new Error();
The decompose
function calculates (q, m)
. q
, m
, and n
together define
the original value x = q * n + m
:
import { decompose } from "https://deno.land/x/modulo/mod.ts";
const x = -1;
const n = 3;
const [q, m] = decompose(x, n);
const test = x == q * n + m;
if (!test) throw new Error();