UNPKG

2.25 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.createEqualScalarNumber = exports.createEqualScalar = void 0;
7
8var _nearlyEqual = require("../../utils/bignumber/nearlyEqual");
9
10var _number = require("../../utils/number");
11
12var _factory = require("../../utils/factory");
13
14var _complex = require("../../utils/complex");
15
16var name = 'equalScalar';
17var dependencies = ['typed', 'config'];
18var createEqualScalar = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
19 var typed = _ref.typed,
20 config = _ref.config;
21
22 /**
23 * Test whether two scalar values are nearly equal.
24 *
25 * @param {number | BigNumber | Fraction | boolean | Complex | Unit} x First value to compare
26 * @param {number | BigNumber | Fraction | boolean | Complex} y Second value to compare
27 * @return {boolean} Returns true when the compared values are equal, else returns false
28 * @private
29 */
30 var equalScalar = typed(name, {
31 'boolean, boolean': function booleanBoolean(x, y) {
32 return x === y;
33 },
34 'number, number': function numberNumber(x, y) {
35 return (0, _number.nearlyEqual)(x, y, config.epsilon);
36 },
37 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
38 return x.eq(y) || (0, _nearlyEqual.nearlyEqual)(x, y, config.epsilon);
39 },
40 'Fraction, Fraction': function FractionFraction(x, y) {
41 return x.equals(y);
42 },
43 'Complex, Complex': function ComplexComplex(x, y) {
44 return (0, _complex.complexEquals)(x, y, config.epsilon);
45 },
46 'Unit, Unit': function UnitUnit(x, y) {
47 if (!x.equalBase(y)) {
48 throw new Error('Cannot compare units with different base');
49 }
50
51 return equalScalar(x.value, y.value);
52 }
53 });
54 return equalScalar;
55});
56exports.createEqualScalar = createEqualScalar;
57var createEqualScalarNumber = (0, _factory.factory)(name, ['typed', 'config'], function (_ref2) {
58 var typed = _ref2.typed,
59 config = _ref2.config;
60 return typed(name, {
61 'number, number': function numberNumber(x, y) {
62 return (0, _number.nearlyEqual)(x, y, config.epsilon);
63 }
64 });
65});
66exports.createEqualScalarNumber = createEqualScalarNumber;
\No newline at end of file