Examples tested against actual runtime. CI re-verifies continuously. Only documented examples are tested.
How to use
Install via yarn add locutus and import:
import { fmod } from 'locutus/php/math/fmod'.
Or with CommonJS: const { fmod } = require('locutus/php/math/fmod')
Use a bundler that supports tree-shaking so you only ship the functions you actually use.
Vite,
webpack,
Rollup, and
Parcel
all handle this. For server-side use this is less of a concern.
Examples
These examples are extracted from test cases that automatically verify our functions against their native counterparts.
#
code
expected result
1
fmod(5.7, 1.3)
0.5
2
fmod(10, 1)
0
Here's what our current TypeScript equivalent to PHP's fmod looks like.
exportfunctionfmod(x: number | string, y: number | string): number { // discuss at: https://locutus.io/php/fmod/ // parity verified: PHP 8.3 // original by: Onno Marsman (https://twitter.com/onnomarsman) // input by: Brett Zamir (https://brett-zamir.me) // bugfixed by: Kevin van Zonneveld (https://kvz.io) // bugfixed by: Irina (https://github.com/dekairi) // example 1: fmod(5.7, 1.3) // returns 1: 0.5 // example 2: fmod(10, 1) // returns 2: 0
lettmp: RegExpMatchArray | null let tmp2 let p = 0 let pY = 0 let l = 0.0 let l2 = 0.0 const normalizedX = Number(x) const normalizedY = Number(y)
if (p < -100 || p > 20) { // toFixed will give an out of bound error so we fix it like this: l = Math.round(Math.log(tmp2) / Math.log(10)) l2 = Math.pow(10, l)
if (p < -100 || p > 20) { // toFixed will give an out of bound error so we fix it like this: l = Math.round(Math.log(tmp2) / Math.log(10)) l2 = Math.pow(10, l)
Locutus is a community effort following
The McDonald's Theory:
we ship first iterations, hoping others will improve them.
If you see something that could be better, we'd love your contribution.