equalScalar.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. import { createCompareUnits } from './compareUnits.js';
  6. var name = 'equalScalar';
  7. var dependencies = ['typed', 'config'];
  8. export var createEqualScalar = /* #__PURE__ */factory(name, dependencies, _ref => {
  9. var {
  10. typed,
  11. config
  12. } = _ref;
  13. var compareUnits = createCompareUnits({
  14. typed
  15. });
  16. /**
  17. * Test whether two scalar values are nearly equal.
  18. *
  19. * @param {number | BigNumber | Fraction | boolean | Complex | Unit} x First value to compare
  20. * @param {number | BigNumber | Fraction | boolean | Complex} y Second value to compare
  21. * @return {boolean} Returns true when the compared values are equal, else returns false
  22. * @private
  23. */
  24. return typed(name, {
  25. 'boolean, boolean': function booleanBoolean(x, y) {
  26. return x === y;
  27. },
  28. 'number, number': function numberNumber(x, y) {
  29. return nearlyEqual(x, y, config.epsilon);
  30. },
  31. 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
  32. return x.eq(y) || bigNearlyEqual(x, y, config.epsilon);
  33. },
  34. 'Fraction, Fraction': function FractionFraction(x, y) {
  35. return x.equals(y);
  36. },
  37. 'Complex, Complex': function ComplexComplex(x, y) {
  38. return complexEquals(x, y, config.epsilon);
  39. }
  40. }, compareUnits);
  41. });
  42. export var createEqualScalarNumber = factory(name, ['typed', 'config'], _ref2 => {
  43. var {
  44. typed,
  45. config
  46. } = _ref2;
  47. return typed(name, {
  48. 'number, number': function numberNumber(x, y) {
  49. return nearlyEqual(x, y, config.epsilon);
  50. }
  51. });
  52. });