simple-squiggle

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

constants.js (1416B)


      1 import { memoize } from '../function.js';
      2 /**
      3  * Calculate BigNumber e
      4  * @param {function} BigNumber   BigNumber constructor
      5  * @returns {BigNumber} Returns e
      6  */
      7 
      8 export var createBigNumberE = memoize(function (BigNumber) {
      9   return new BigNumber(1).exp();
     10 }, {
     11   hasher
     12 });
     13 /**
     14  * Calculate BigNumber golden ratio, phi = (1+sqrt(5))/2
     15  * @param {function} BigNumber   BigNumber constructor
     16  * @returns {BigNumber} Returns phi
     17  */
     18 
     19 export var createBigNumberPhi = memoize(function (BigNumber) {
     20   return new BigNumber(1).plus(new BigNumber(5).sqrt()).div(2);
     21 }, {
     22   hasher
     23 });
     24 /**
     25  * Calculate BigNumber pi.
     26  * @param {function} BigNumber   BigNumber constructor
     27  * @returns {BigNumber} Returns pi
     28  */
     29 
     30 export var createBigNumberPi = memoize(function (BigNumber) {
     31   return BigNumber.acos(-1);
     32 }, {
     33   hasher
     34 });
     35 /**
     36  * Calculate BigNumber tau, tau = 2 * pi
     37  * @param {function} BigNumber   BigNumber constructor
     38  * @returns {BigNumber} Returns tau
     39  */
     40 
     41 export var createBigNumberTau = memoize(function (BigNumber) {
     42   return createBigNumberPi(BigNumber).times(2);
     43 }, {
     44   hasher
     45 });
     46 /**
     47  * Create a hash for a BigNumber constructor function. The created has is
     48  * the configured precision
     49  * @param {Array} args         Supposed to contain a single entry with
     50  *                             a BigNumber constructor
     51  * @return {number} precision
     52  * @private
     53  */
     54 
     55 function hasher(args) {
     56   return args[0].precision;
     57 }