Repository
Current version released
5 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) % nDocumentation
modulo exposes a TypeScript API for Deno. It consists of the mod.ts
module, which exports the modulo function, the complementary quotient
function, and the decompose function.
mod.ts
The modulo function calculates m = x mod n:
import { modulo } from "./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(q / n).
import { modulo, quotient } from "./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 "./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();That’s it!
- Repository: eibens/modulo on GitHub