ceil.js (5370B)
1 "use strict"; 2 3 var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); 4 5 Object.defineProperty(exports, "__esModule", { 6 value: true 7 }); 8 exports.createCeil = void 0; 9 10 var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); 11 12 var _decimal = _interopRequireDefault(require("decimal.js")); 13 14 var _factory = require("../../utils/factory.js"); 15 16 var _collection = require("../../utils/collection.js"); 17 18 var _number = require("../../utils/number.js"); 19 20 var _nearlyEqual = require("../../utils/bignumber/nearlyEqual.js"); 21 22 var _index = require("../../plain/number/index.js"); 23 24 var _algorithm = require("../../type/matrix/utils/algorithm11.js"); 25 26 var _algorithm2 = require("../../type/matrix/utils/algorithm14.js"); 27 28 var name = 'ceil'; 29 var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar']; 30 var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) { 31 var typed = _ref.typed, 32 config = _ref.config, 33 round = _ref.round, 34 matrix = _ref.matrix, 35 equalScalar = _ref.equalScalar; 36 var algorithm11 = (0, _algorithm.createAlgorithm11)({ 37 typed: typed, 38 equalScalar: equalScalar 39 }); 40 var algorithm14 = (0, _algorithm2.createAlgorithm14)({ 41 typed: typed 42 }); 43 /** 44 * Round a value towards plus infinity 45 * If `x` is complex, both real and imaginary part are rounded towards plus infinity. 46 * For matrices, the function is evaluated element wise. 47 * 48 * Syntax: 49 * 50 * math.ceil(x) 51 * math.ceil(x, n) 52 * 53 * Examples: 54 * 55 * math.ceil(3.2) // returns number 4 56 * math.ceil(3.8) // returns number 4 57 * math.ceil(-4.2) // returns number -4 58 * math.ceil(-4.7) // returns number -4 59 * 60 * math.ceil(3.212, 2) // returns number 3.22 61 * math.ceil(3.288, 2) // returns number 3.29 62 * math.ceil(-4.212, 2) // returns number -4.21 63 * math.ceil(-4.782, 2) // returns number -4.78 64 * 65 * const c = math.complex(3.24, -2.71) 66 * math.ceil(c) // returns Complex 4 - 2i 67 * math.ceil(c, 1) // returns Complex 3.3 - 2.7i 68 * 69 * math.ceil([3.2, 3.8, -4.7]) // returns Array [4, 4, -4] 70 * math.ceil([3.21, 3.82, -4.71], 1) // returns Array [3.3, 3.9, -4.7] 71 * 72 * See also: 73 * 74 * floor, fix, round 75 * 76 * @param {number | BigNumber | Fraction | Complex | Array | Matrix} x Number to be rounded 77 * @param {number | BigNumber | Array} [n=0] Number of decimals 78 * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value 79 */ 80 81 return typed('ceil', { 82 number: function number(x) { 83 if ((0, _number.nearlyEqual)(x, round(x), config.epsilon)) { 84 return round(x); 85 } else { 86 return (0, _index.ceilNumber)(x); 87 } 88 }, 89 'number, number': function numberNumber(x, n) { 90 if ((0, _number.nearlyEqual)(x, round(x, n), config.epsilon)) { 91 return round(x, n); 92 } else { 93 var _$split = "".concat(x, "e").split('e'), 94 _$split2 = (0, _slicedToArray2.default)(_$split, 2), 95 number = _$split2[0], 96 exponent = _$split2[1]; 97 98 var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n))); 99 100 var _$split3 = "".concat(result, "e").split('e'); 101 102 var _$split4 = (0, _slicedToArray2.default)(_$split3, 2); 103 104 number = _$split4[0]; 105 exponent = _$split4[1]; 106 return Number("".concat(number, "e").concat(Number(exponent) - n)); 107 } 108 }, 109 Complex: function Complex(x) { 110 return x.ceil(); 111 }, 112 'Complex, number': function ComplexNumber(x, n) { 113 return x.ceil(n); 114 }, 115 BigNumber: function BigNumber(x) { 116 if ((0, _nearlyEqual.nearlyEqual)(x, round(x), config.epsilon)) { 117 return round(x); 118 } else { 119 return x.ceil(); 120 } 121 }, 122 'BigNumber, BigNumber': function BigNumberBigNumber(x, n) { 123 if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) { 124 return round(x, n); 125 } else { 126 return x.toDecimalPlaces(n.toNumber(), _decimal.default.ROUND_CEIL); 127 } 128 }, 129 Fraction: function Fraction(x) { 130 return x.ceil(); 131 }, 132 'Fraction, number': function FractionNumber(x, n) { 133 return x.ceil(n); 134 }, 135 'Array | Matrix': function ArrayMatrix(x) { 136 // deep map collection, skip zeros since ceil(0) = 0 137 return (0, _collection.deepMap)(x, this, true); 138 }, 139 'Array | Matrix, number': function ArrayMatrixNumber(x, n) { 140 var _this = this; 141 142 // deep map collection, skip zeros since ceil(0) = 0 143 return (0, _collection.deepMap)(x, function (i) { 144 return _this(i, n); 145 }, true); 146 }, 147 'SparseMatrix, number | BigNumber': function SparseMatrixNumberBigNumber(x, y) { 148 return algorithm11(x, y, this, false); 149 }, 150 'DenseMatrix, number | BigNumber': function DenseMatrixNumberBigNumber(x, y) { 151 return algorithm14(x, y, this, false); 152 }, 153 'number | Complex | BigNumber, Array': function numberComplexBigNumberArray(x, y) { 154 // use matrix implementation 155 return algorithm14(matrix(y), x, this, true).valueOf(); 156 } 157 }); 158 }); 159 exports.createCeil = createCeil;