src/log.js
-
- import pointwise from './pointwise'
- import spPointwise from './spPointwise'
- import Sparse from './Sparse'
- import Complex from './Complex'
- import atan2 from './atan2'
- import abs from './abs'
-
- const log = pointwise(Math.log)
- const slog = spPointwise(Math.log)
-
- function clog(x) {
- if (x.im) {
- var theta = new Complex(atan2(x.im, x.re)),
- r = abs(x);
- return new Complex(log(r.re), theta.re);
- }
- return new Complex(log(x.re));
- }
-
-
- /**
- * Pointwise Math.log(x)
- *
- * @export
- * @param {Number|Array|Complex|Sparse} m
- * @returns {Number|Array|Complex|Sparse}
- * @example
- *
- * log(1)
- * // returns Math.log(1)
- * log([1, 2])
- * // returns [Math.log(1), Math.log(2)]
- * log([[1,2],[1,3]])
- * // returns [ [Math.log(1), Math.log(2)], [Math.log(1), Math.log(3)] ]
- */
- export default function (m) {
- switch (m.constructor.name) {
- case 'Complex':
- return clog(m);
- case 'Sparse':
- return slog(m);
- default:
- return log(m);
- }
- }