https://github.com/eibens/modulo
The mathematical modulo operation in TypeScript for Deno.
https://github.com/eibens/modulo
deno math modulo quotient typescript utility
Last synced: 11 months ago
JSON representation
The mathematical modulo operation in TypeScript for Deno.
- Host: GitHub
- URL: https://github.com/eibens/modulo
- Owner: eibens
- License: mit
- Created: 2021-06-08T11:08:45.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-12-06T21:57:36.000Z (about 4 years ago)
- Last Synced: 2025-02-24T07:53:02.147Z (12 months ago)
- Topics: deno, math, modulo, quotient, typescript, utility
- Language: TypeScript
- Homepage:
- Size: 20.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# modulo
[modulo](#) implements the mathematical [modulo operation] in TypeScript for
[Deno](https://deno.land).
[](LICENSE)
[](https://deno.land/x/modulo)
[](https://github.com/eibens/modulo)
[](https://github.com/eibens/modulo/actions/workflows/ci.yml)
[](https://codecov.io/gh/eibens/modulo)
# 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
```
# Usage
The `modulo` function calculates `m = x mod n`:
```ts
import { modulo } from "https://deno.land/x/modulo/mod.ts";
const x = -1;
const n = 3;
const m = modulo(x, n);
console.assert(m === 2);
```
The `quotient` function calculates `q = floor(x / n)`.
```ts
import { quotient } from "https://deno.land/x/modulo/mod.ts";
const x = -1;
const n = 3;
const q = quotient(x, n);
console.assert(q === -1);
```
The `decompose` function calculates `(q, m)`. `q`, `m`, and `n` together define
the original value `x = q * n + m`:
```ts
import { decompose } from "https://deno.land/x/modulo/mod.ts";
const x = -1;
const n = 3;
const [q, m] = decompose(x, n);
console.assert(x == q * n + m);
```
[modulo operation]: https://en.wikipedia.org/wiki/Modulo_operation
[modulo formula for JavaScript]: https://web.archive.org/web/20090717035140if_/javascript.about.com/od/problemsolving/a/modulobug.htm