equalScalar.js (1884B)
1 import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js'; 2 import { nearlyEqual } from '../../utils/number.js'; 3 import { factory } from '../../utils/factory.js'; 4 import { complexEquals } from '../../utils/complex.js'; 5 var name = 'equalScalar'; 6 var dependencies = ['typed', 'config']; 7 export var createEqualScalar = /* #__PURE__ */factory(name, dependencies, _ref => { 8 var { 9 typed, 10 config 11 } = _ref; 12 13 /** 14 * Test whether two scalar values are nearly equal. 15 * 16 * @param {number | BigNumber | Fraction | boolean | Complex | Unit} x First value to compare 17 * @param {number | BigNumber | Fraction | boolean | Complex} y Second value to compare 18 * @return {boolean} Returns true when the compared values are equal, else returns false 19 * @private 20 */ 21 return typed(name, { 22 'boolean, boolean': function booleanBoolean(x, y) { 23 return x === y; 24 }, 25 'number, number': function numberNumber(x, y) { 26 return nearlyEqual(x, y, config.epsilon); 27 }, 28 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) { 29 return x.eq(y) || bigNearlyEqual(x, y, config.epsilon); 30 }, 31 'Fraction, Fraction': function FractionFraction(x, y) { 32 return x.equals(y); 33 }, 34 'Complex, Complex': function ComplexComplex(x, y) { 35 return complexEquals(x, y, config.epsilon); 36 }, 37 'Unit, Unit': function UnitUnit(x, y) { 38 if (!x.equalBase(y)) { 39 throw new Error('Cannot compare units with different base'); 40 } 41 42 return this(x.value, y.value); 43 } 44 }); 45 }); 46 export var createEqualScalarNumber = factory(name, ['typed', 'config'], _ref2 => { 47 var { 48 typed, 49 config 50 } = _ref2; 51 return typed(name, { 52 'number, number': function numberNumber(x, y) { 53 return nearlyEqual(x, y, config.epsilon); 54 } 55 }); 56 });