pocomath/src/generic/all.mjs

23 lines
692 B
JavaScript

import {adapted} from './Types/adapted.mjs'
import Fraction from 'fraction.js/bigfraction.js'
export * from './arithmetic.mjs'
export * from './relational.mjs'
export const fraction = adapted('Fraction', Fraction, {
before: ['Complex'],
from: {number: n => new Fraction(n)},
operations: {
compare: {'Fraction,Fraction': () => (f,g) => new Fraction(f.compare(g))},
mod: {
'Fraction,Fraction': () => (n,d) => {
// patch for "mathematician's modulus"
// OK to use full public API of Fraction here
const fmod = n.mod(d)
if (fmod.s === -1n) return fmod.add(d.abs())
return fmod
}
}
}
})