simple-squiggle

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

divideScalar.js (2131B)


      1 "use strict";
      2 
      3 Object.defineProperty(exports, "__esModule", {
      4   value: true
      5 });
      6 exports.createDivideScalar = void 0;
      7 
      8 var _factory = require("../../utils/factory.js");
      9 
     10 var _is = require("../../utils/is.js");
     11 
     12 var name = 'divideScalar';
     13 var dependencies = ['typed', 'numeric'];
     14 var createDivideScalar = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
     15   var typed = _ref.typed,
     16       numeric = _ref.numeric;
     17 
     18   /**
     19    * Divide two scalar values, `x / y`.
     20    * This function is meant for internal use: it is used by the public functions
     21    * `divide` and `inv`.
     22    *
     23    * This function does not support collections (Array or Matrix).
     24    *
     25    * @param  {number | BigNumber | Fraction | Complex | Unit} x   Numerator
     26    * @param  {number | BigNumber | Fraction | Complex} y          Denominator
     27    * @return {number | BigNumber | Fraction | Complex | Unit}     Quotient, `x / y`
     28    * @private
     29    */
     30   return typed(name, {
     31     'number, number': function numberNumber(x, y) {
     32       return x / y;
     33     },
     34     'Complex, Complex': function ComplexComplex(x, y) {
     35       return x.div(y);
     36     },
     37     'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
     38       return x.div(y);
     39     },
     40     'Fraction, Fraction': function FractionFraction(x, y) {
     41       return x.div(y);
     42     },
     43     'Unit, number | Fraction | BigNumber': function UnitNumberFractionBigNumber(x, y) {
     44       var res = x.clone(); // TODO: move the divide function to Unit.js, it uses internals of Unit
     45 
     46       var one = numeric(1, (0, _is.typeOf)(y));
     47       res.value = this(res.value === null ? res._normalize(one) : res.value, y);
     48       return res;
     49     },
     50     'number | Fraction | BigNumber, Unit': function numberFractionBigNumberUnit(x, y) {
     51       var res = y.clone();
     52       res = res.pow(-1); // TODO: move the divide function to Unit.js, it uses internals of Unit
     53 
     54       var one = numeric(1, (0, _is.typeOf)(x));
     55       res.value = this(x, y.value === null ? y._normalize(one) : y.value);
     56       return res;
     57     },
     58     'Unit, Unit': function UnitUnit(x, y) {
     59       return x.divide(y);
     60     }
     61   });
     62 });
     63 exports.createDivideScalar = createDivideScalar;