simple-squiggle

A restricted subset of Squiggle
Log | Files | Refs | README

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 });