simple-squiggle

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

cumsum.transform.js (1273B)


      1 import { isBigNumber, isCollection, isNumber } from '../../utils/is.js';
      2 import { factory } from '../../utils/factory.js';
      3 import { errorTransform } from './utils/errorTransform.js';
      4 import { createCumSum } from '../../function/statistics/cumsum.js';
      5 /**
      6  * Attach a transform function to math.sum
      7  * Adds a property transform containing the transform function.
      8  *
      9  * This transform changed the last `dim` parameter of function sum
     10  * from one-based to zero based
     11  */
     12 
     13 var name = 'cumsum';
     14 var dependencies = ['typed', 'add', 'unaryPlus'];
     15 export var createCumSumTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
     16   var {
     17     typed,
     18     add,
     19     unaryPlus
     20   } = _ref;
     21   var cumsum = createCumSum({
     22     typed,
     23     add,
     24     unaryPlus
     25   });
     26   return typed(name, {
     27     '...any': function any(args) {
     28       // change last argument dim from one-based to zero-based
     29       if (args.length === 2 && isCollection(args[0])) {
     30         var dim = args[1];
     31 
     32         if (isNumber(dim)) {
     33           args[1] = dim - 1;
     34         } else if (isBigNumber(dim)) {
     35           args[1] = dim.minus(1);
     36         }
     37       }
     38 
     39       try {
     40         return cumsum.apply(null, args);
     41       } catch (err) {
     42         throw errorTransform(err);
     43       }
     44     }
     45   });
     46 }, {
     47   isTransformFunction: true
     48 });