UNPKG

1.88 kBJavaScriptView Raw
1import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
2import { nearlyEqual } from '../../utils/number.js';
3import { factory } from '../../utils/factory.js';
4import { complexEquals } from '../../utils/complex.js';
5var name = 'equalScalar';
6var dependencies = ['typed', 'config'];
7export 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});
46export 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});
\No newline at end of file