factoriesNumber.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. import { absNumber, acoshNumber, acosNumber, acothNumber, acotNumber, acschNumber, acscNumber, addNumber, andNumber, asechNumber, asecNumber, asinhNumber, asinNumber, atan2Number, atanhNumber, atanNumber, bitAndNumber, bitNotNumber, bitOrNumber, bitXorNumber, cbrtNumber, combinationsNumber, coshNumber, cosNumber, cothNumber, cotNumber, cschNumber, cscNumber, cubeNumber, divideNumber, expm1Number, expNumber, gammaNumber, gcdNumber, isIntegerNumber, isNaNNumber, isNegativeNumber, isPositiveNumber, isZeroNumber, lcmNumber, leftShiftNumber, lgammaNumber, log10Number, log1pNumber, log2Number, logNumber, modNumber, multiplyNumber, normNumber, notNumber, nthRootNumber, orNumber, powNumber, rightArithShiftNumber, rightLogShiftNumber, roundNumber, sechNumber, secNumber, signNumber, sinhNumber, sinNumber, sqrtNumber, squareNumber, subtractNumber, tanhNumber, tanNumber, unaryMinusNumber, unaryPlusNumber, xgcdNumber, xorNumber } from './plain/number/index.js';
  2. import { factory } from './utils/factory.js';
  3. import { noIndex, noMatrix, noSubset } from './utils/noop.js';
  4. // ----------------------------------------------------------------------------
  5. // classes and functions
  6. // core
  7. export { createTyped } from './core/function/typed.js';
  8. // classes
  9. export { createResultSet } from './type/resultset/ResultSet.js';
  10. export { createRangeClass } from './type/matrix/Range.js';
  11. export { createHelpClass } from './expression/Help.js';
  12. export { createChainClass } from './type/chain/Chain.js';
  13. export { createHelp } from './expression/function/help.js';
  14. export { createChain } from './type/chain/function/chain.js';
  15. // algebra
  16. export { createResolve } from './function/algebra/resolve.js';
  17. export { createSimplify } from './function/algebra/simplify.js';
  18. export { createSimplifyConstant } from './function/algebra/simplifyConstant.js';
  19. export { createSimplifyCore } from './function/algebra/simplifyCore.js';
  20. export { createDerivative } from './function/algebra/derivative.js';
  21. export { createRationalize } from './function/algebra/rationalize.js';
  22. // arithmetic
  23. export var createUnaryMinus = /* #__PURE__ */createNumberFactory('unaryMinus', unaryMinusNumber);
  24. export var createUnaryPlus = /* #__PURE__ */createNumberFactory('unaryPlus', unaryPlusNumber);
  25. export var createAbs = /* #__PURE__ */createNumberFactory('abs', absNumber);
  26. export var createAddScalar = /* #__PURE__ */createNumberFactory('addScalar', addNumber);
  27. export var createCbrt = /* #__PURE__ */createNumberFactory('cbrt', cbrtNumber);
  28. export { createCeilNumber as createCeil } from './function/arithmetic/ceil.js';
  29. export var createCube = /* #__PURE__ */createNumberFactory('cube', cubeNumber);
  30. export var createExp = /* #__PURE__ */createNumberFactory('exp', expNumber);
  31. export var createExpm1 = /* #__PURE__ */createNumberFactory('expm1', expm1Number);
  32. export { createFixNumber as createFix } from './function/arithmetic/fix.js';
  33. export { createFloorNumber as createFloor } from './function/arithmetic/floor.js';
  34. export var createGcd = /* #__PURE__ */createNumberFactory('gcd', gcdNumber);
  35. export var createLcm = /* #__PURE__ */createNumberFactory('lcm', lcmNumber);
  36. export var createLog10 = /* #__PURE__ */createNumberFactory('log10', log10Number);
  37. export var createLog2 = /* #__PURE__ */createNumberFactory('log2', log2Number);
  38. export var createMod = /* #__PURE__ */createNumberFactory('mod', modNumber);
  39. export var createMultiplyScalar = /* #__PURE__ */createNumberFactory('multiplyScalar', multiplyNumber);
  40. export var createMultiply = /* #__PURE__ */createNumberFactory('multiply', multiplyNumber);
  41. export var createNthRoot = /* #__PURE__ */
  42. createNumberOptionalSecondArgFactory('nthRoot', nthRootNumber);
  43. export var createSign = /* #__PURE__ */createNumberFactory('sign', signNumber);
  44. export var createSqrt = /* #__PURE__ */createNumberFactory('sqrt', sqrtNumber);
  45. export var createSquare = /* #__PURE__ */createNumberFactory('square', squareNumber);
  46. export var createSubtract = /* #__PURE__ */createNumberFactory('subtract', subtractNumber);
  47. export var createXgcd = /* #__PURE__ */createNumberFactory('xgcd', xgcdNumber);
  48. export var createDivideScalar = /* #__PURE__ */createNumberFactory('divideScalar', divideNumber);
  49. export var createPow = /* #__PURE__ */createNumberFactory('pow', powNumber);
  50. export var createRound = /* #__PURE__ */
  51. createNumberOptionalSecondArgFactory('round', roundNumber);
  52. export var createLog = /* #__PURE__ */
  53. createNumberOptionalSecondArgFactory('log', logNumber);
  54. export var createLog1p = /* #__PURE__ */createNumberFactory('log1p', log1pNumber);
  55. export var createAdd = /* #__PURE__ */createNumberFactory('add', addNumber);
  56. export { createHypot } from './function/arithmetic/hypot.js';
  57. export var createNorm = /* #__PURE__ */createNumberFactory('norm', normNumber);
  58. export var createDivide = /* #__PURE__ */createNumberFactory('divide', divideNumber);
  59. // bitwise
  60. export var createBitAnd = /* #__PURE__ */createNumberFactory('bitAnd', bitAndNumber);
  61. export var createBitNot = /* #__PURE__ */createNumberFactory('bitNot', bitNotNumber);
  62. export var createBitOr = /* #__PURE__ */createNumberFactory('bitOr', bitOrNumber);
  63. export var createBitXor = /* #__PURE__ */createNumberFactory('bitXor', bitXorNumber);
  64. export var createLeftShift = /* #__PURE__ */createNumberFactory('leftShift', leftShiftNumber);
  65. export var createRightArithShift = /* #__PURE__ */createNumberFactory('rightArithShift', rightArithShiftNumber);
  66. export var createRightLogShift = /* #__PURE__ */createNumberFactory('rightLogShift', rightLogShiftNumber);
  67. // combinatorics
  68. export { createStirlingS2 } from './function/combinatorics/stirlingS2.js';
  69. export { createBellNumbers } from './function/combinatorics/bellNumbers.js';
  70. export { createCatalan } from './function/combinatorics/catalan.js';
  71. export { createComposition } from './function/combinatorics/composition.js';
  72. // constants
  73. export { createE, createUppercaseE, createFalse,
  74. // createI,
  75. createInfinity, createLN10, createLN2, createLOG10E, createLOG2E, createNaN, createNull, createPhi, createPi, createUppercasePi, createSQRT1_2,
  76. // eslint-disable-line camelcase
  77. createSQRT2, createTau, createTrue, createVersion } from './constants.js';
  78. // create
  79. export { createNumber } from './type/number.js';
  80. export { createString } from './type/string.js';
  81. export { createBoolean } from './type/boolean.js';
  82. export { createParser } from './expression/function/parser.js';
  83. // expression
  84. export { createNode } from './expression/node/Node.js';
  85. export { createAccessorNode } from './expression/node/AccessorNode.js';
  86. export { createArrayNode } from './expression/node/ArrayNode.js';
  87. export { createAssignmentNode } from './expression/node/AssignmentNode.js';
  88. export { createBlockNode } from './expression/node/BlockNode.js';
  89. export { createConditionalNode } from './expression/node/ConditionalNode.js';
  90. export { createConstantNode } from './expression/node/ConstantNode.js';
  91. export { createFunctionAssignmentNode } from './expression/node/FunctionAssignmentNode.js';
  92. export { createIndexNode } from './expression/node/IndexNode.js';
  93. export { createObjectNode } from './expression/node/ObjectNode.js';
  94. export { createOperatorNode } from './expression/node/OperatorNode.js';
  95. export { createParenthesisNode } from './expression/node/ParenthesisNode.js';
  96. export { createRangeNode } from './expression/node/RangeNode.js';
  97. export { createRelationalNode } from './expression/node/RelationalNode.js';
  98. export { createSymbolNode } from './expression/node/SymbolNode.js';
  99. export { createFunctionNode } from './expression/node/FunctionNode.js';
  100. export { createParse } from './expression/parse.js';
  101. export { createCompile } from './expression/function/compile.js';
  102. export { createEvaluate } from './expression/function/evaluate.js';
  103. export { createParserClass } from './expression/Parser.js';
  104. // logical
  105. export var createAnd = /* #__PURE__ */createNumberFactory('and', andNumber);
  106. export var createNot = /* #__PURE__ */createNumberFactory('not', notNumber);
  107. export var createOr = /* #__PURE__ */createNumberFactory('or', orNumber);
  108. export var createXor = /* #__PURE__ */createNumberFactory('xor', xorNumber);
  109. // matrix
  110. export { createApply } from './function/matrix/apply.js';
  111. export { createFilter } from './function/matrix/filter.js';
  112. export { createForEach } from './function/matrix/forEach.js';
  113. export { createMap } from './function/matrix/map.js';
  114. export { createRange } from './function/matrix/range.js';
  115. export { createSize } from './function/matrix/size.js';
  116. // FIXME: create a lightweight "number" implementation of subset only supporting plain objects/arrays
  117. export var createIndex = /* #__PURE__ */factory('index', [], () => noIndex);
  118. export var createMatrix = /* #__PURE__ */factory('matrix', [], () => noMatrix); // FIXME: needed now because subset transform needs it. Remove the need for it in subset
  119. export var createSubset = /* #__PURE__ */factory('subset', [], () => noSubset);
  120. // TODO: provide number+array implementations for map, filter, forEach, zeros, ...?
  121. // TODO: create range implementation for range?
  122. export { createPartitionSelect } from './function/matrix/partitionSelect.js';
  123. // probability
  124. export var createCombinations = createNumberFactory('combinations', combinationsNumber);
  125. export var createGamma = createNumberFactory('gamma', gammaNumber);
  126. export var createLgamma = createNumberFactory('lgamma', lgammaNumber);
  127. export { createCombinationsWithRep } from './function/probability/combinationsWithRep.js';
  128. export { createFactorial } from './function/probability/factorial.js';
  129. export { createMultinomial } from './function/probability/multinomial.js';
  130. export { createPermutations } from './function/probability/permutations.js';
  131. export { createPickRandom } from './function/probability/pickRandom.js';
  132. export { createRandomNumber as createRandom } from './function/probability/random.js';
  133. export { createRandomInt } from './function/probability/randomInt.js';
  134. // relational
  135. export { createEqualScalarNumber as createEqualScalar } from './function/relational/equalScalar.js';
  136. export { createCompareNumber as createCompare } from './function/relational/compare.js';
  137. export { createCompareNatural } from './function/relational/compareNatural.js';
  138. export { createCompareTextNumber as createCompareText } from './function/relational/compareText.js';
  139. export { createEqualNumber as createEqual } from './function/relational/equal.js';
  140. export { createEqualText } from './function/relational/equalText.js';
  141. export { createSmallerNumber as createSmaller } from './function/relational/smaller.js';
  142. export { createSmallerEqNumber as createSmallerEq } from './function/relational/smallerEq.js';
  143. export { createLargerNumber as createLarger } from './function/relational/larger.js';
  144. export { createLargerEqNumber as createLargerEq } from './function/relational/largerEq.js';
  145. export { createDeepEqual } from './function/relational/deepEqual.js';
  146. export { createUnequalNumber as createUnequal } from './function/relational/unequal.js';
  147. // special
  148. export { createErf } from './function/special/erf.js';
  149. // statistics
  150. export { createMode } from './function/statistics/mode.js';
  151. export { createProd } from './function/statistics/prod.js';
  152. export { createMax } from './function/statistics/max.js';
  153. export { createMin } from './function/statistics/min.js';
  154. export { createSum } from './function/statistics/sum.js';
  155. export { createCumSum } from './function/statistics/cumsum.js';
  156. export { createMean } from './function/statistics/mean.js';
  157. export { createMedian } from './function/statistics/median.js';
  158. export { createMad } from './function/statistics/mad.js';
  159. export { createVariance } from './function/statistics/variance.js';
  160. export { createQuantileSeq } from './function/statistics/quantileSeq.js';
  161. export { createStd } from './function/statistics/std.js';
  162. // string
  163. export { createFormat } from './function/string/format.js';
  164. export { createPrint } from './function/string/print.js';
  165. // trigonometry
  166. export var createAcos = /* #__PURE__ */createNumberFactory('acos', acosNumber);
  167. export var createAcosh = /* #__PURE__ */createNumberFactory('acosh', acoshNumber);
  168. export var createAcot = /* #__PURE__ */createNumberFactory('acot', acotNumber);
  169. export var createAcoth = /* #__PURE__ */createNumberFactory('acoth', acothNumber);
  170. export var createAcsc = /* #__PURE__ */createNumberFactory('acsc', acscNumber);
  171. export var createAcsch = /* #__PURE__ */createNumberFactory('acsch', acschNumber);
  172. export var createAsec = /* #__PURE__ */createNumberFactory('asec', asecNumber);
  173. export var createAsech = /* #__PURE__ */createNumberFactory('asech', asechNumber);
  174. export var createAsin = /* #__PURE__ */createNumberFactory('asin', asinNumber);
  175. export var createAsinh = /* #__PURE__ */createNumberFactory('asinh', asinhNumber);
  176. export var createAtan = /* #__PURE__ */createNumberFactory('atan', atanNumber);
  177. export var createAtan2 = /* #__PURE__ */createNumberFactory('atan2', atan2Number);
  178. export var createAtanh = /* #__PURE__ */createNumberFactory('atanh', atanhNumber);
  179. export var createCos = /* #__PURE__ */createNumberFactory('cos', cosNumber);
  180. export var createCosh = /* #__PURE__ */createNumberFactory('cosh', coshNumber);
  181. export var createCot = /* #__PURE__ */createNumberFactory('cot', cotNumber);
  182. export var createCoth = /* #__PURE__ */createNumberFactory('coth', cothNumber);
  183. export var createCsc = /* #__PURE__ */createNumberFactory('csc', cscNumber);
  184. export var createCsch = /* #__PURE__ */createNumberFactory('csch', cschNumber);
  185. export var createSec = /* #__PURE__ */createNumberFactory('sec', secNumber);
  186. export var createSech = /* #__PURE__ */createNumberFactory('sech', sechNumber);
  187. export var createSin = /* #__PURE__ */createNumberFactory('sin', sinNumber);
  188. export var createSinh = /* #__PURE__ */createNumberFactory('sinh', sinhNumber);
  189. export var createTan = /* #__PURE__ */createNumberFactory('tan', tanNumber);
  190. export var createTanh = /* #__PURE__ */createNumberFactory('tanh', tanhNumber);
  191. // transforms
  192. export { createApplyTransform } from './expression/transform/apply.transform.js';
  193. export { createFilterTransform } from './expression/transform/filter.transform.js';
  194. export { createForEachTransform } from './expression/transform/forEach.transform.js';
  195. export { createMapTransform } from './expression/transform/map.transform.js';
  196. export { createMaxTransform } from './expression/transform/max.transform.js';
  197. export { createMeanTransform } from './expression/transform/mean.transform.js';
  198. export { createMinTransform } from './expression/transform/min.transform.js';
  199. export { createRangeTransform } from './expression/transform/range.transform.js';
  200. export var createSubsetTransform = /* #__PURE__ */factory('subset', [], () => noSubset, {
  201. isTransformFunction: true
  202. });
  203. export { createStdTransform } from './expression/transform/std.transform.js';
  204. export { createSumTransform } from './expression/transform/sum.transform.js';
  205. export { createCumSumTransform } from './expression/transform/cumsum.transform.js';
  206. export { createVarianceTransform } from './expression/transform/variance.transform.js';
  207. // utils
  208. export { createClone } from './function/utils/clone.js';
  209. export var createIsInteger = /* #__PURE__ */createNumberFactory('isInteger', isIntegerNumber);
  210. export var createIsNegative = /* #__PURE__ */createNumberFactory('isNegative', isNegativeNumber);
  211. export { createIsNumeric } from './function/utils/isNumeric.js';
  212. export { createHasNumericValue } from './function/utils/hasNumericValue.js';
  213. export var createIsPositive = /* #__PURE__ */createNumberFactory('isPositive', isPositiveNumber);
  214. export var createIsZero = /* #__PURE__ */createNumberFactory('isZero', isZeroNumber);
  215. export var createIsNaN = /* #__PURE__ */createNumberFactory('isNaN', isNaNNumber);
  216. export { createTypeOf } from './function/utils/typeOf.js';
  217. export { createIsPrime } from './function/utils/isPrime.js';
  218. export { createNumeric } from './function/utils/numeric.js';
  219. // json
  220. export { createReviver } from './json/reviver.js';
  221. export { createReplacer } from './json/replacer.js';
  222. // helper functions to create a factory function for a function which only needs typed-function
  223. function createNumberFactory(name, fn) {
  224. return factory(name, ['typed'], _ref => {
  225. var {
  226. typed
  227. } = _ref;
  228. return typed(fn);
  229. });
  230. }
  231. function createNumberOptionalSecondArgFactory(name, fn) {
  232. return factory(name, ['typed'], _ref2 => {
  233. var {
  234. typed
  235. } = _ref2;
  236. return typed({
  237. number: fn,
  238. 'number,number': fn
  239. });
  240. });
  241. }