log.js (2538B)
1 "use strict"; 2 3 Object.defineProperty(exports, "__esModule", { 4 value: true 5 }); 6 exports.createLog = void 0; 7 8 var _factory = require("../../utils/factory.js"); 9 10 var _collection = require("../../utils/collection.js"); 11 12 var _index = require("../../plain/number/index.js"); 13 14 var name = 'log'; 15 var dependencies = ['config', 'typed', 'divideScalar', 'Complex']; 16 var createLog = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) { 17 var typed = _ref.typed, 18 config = _ref.config, 19 divideScalar = _ref.divideScalar, 20 Complex = _ref.Complex; 21 22 /** 23 * Calculate the logarithm of a value. 24 * 25 * For matrices, the function is evaluated element wise. 26 * 27 * Syntax: 28 * 29 * math.log(x) 30 * math.log(x, base) 31 * 32 * Examples: 33 * 34 * math.log(3.5) // returns 1.252762968495368 35 * math.exp(math.log(2.4)) // returns 2.4 36 * 37 * math.pow(10, 4) // returns 10000 38 * math.log(10000, 10) // returns 4 39 * math.log(10000) / math.log(10) // returns 4 40 * 41 * math.log(1024, 2) // returns 10 42 * math.pow(2, 10) // returns 1024 43 * 44 * See also: 45 * 46 * exp, log2, log10, log1p 47 * 48 * @param {number | BigNumber | Complex | Array | Matrix} x 49 * Value for which to calculate the logarithm. 50 * @param {number | BigNumber | Complex} [base=e] 51 * Optional base for the logarithm. If not provided, the natural 52 * logarithm of `x` is calculated. 53 * @return {number | BigNumber | Complex | Array | Matrix} 54 * Returns the logarithm of `x` 55 */ 56 return typed(name, { 57 number: function number(x) { 58 if (x >= 0 || config.predictable) { 59 return (0, _index.logNumber)(x); 60 } else { 61 // negative value -> complex value computation 62 return new Complex(x, 0).log(); 63 } 64 }, 65 Complex: function Complex(x) { 66 return x.log(); 67 }, 68 BigNumber: function BigNumber(x) { 69 if (!x.isNegative() || config.predictable) { 70 return x.ln(); 71 } else { 72 // downgrade to number, return Complex valued result 73 return new Complex(x.toNumber(), 0).log(); 74 } 75 }, 76 'Array | Matrix': function ArrayMatrix(x) { 77 return (0, _collection.deepMap)(x, this); 78 }, 79 'any, any': function anyAny(x, base) { 80 // calculate logarithm for a specified base, log(x, base) 81 return divideScalar(this(x), this(base)); 82 } 83 }); 84 }); 85 exports.createLog = createLog;