@nexys/math-ts
Version:
[](https://www.npmjs.com/package/@nexys/math-ts) [](https://travis-ci.com/github/Nexysweb/math-ts) [ • 1.13 kB
JavaScript
;
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const Zeros = __importStar(require("../zeros"));
exports.pv = (r, n) => 1 / exports.fv(r, n);
exports.fv = (r, n) => Math.pow((1 + r), n);
exports.pvMulti = (r, n) => (1 - Math.pow((1 + r), (-n))) / r;
exports.irr = (p, n) => {
const f = (x) => -p + exports.pvMulti(x, n);
return Zeros.secant([-.2, 1.5], f);
};
exports.perpetuity = (r, y = 1) => 1 / r / y;
exports.fvUneven = (cf, r, s = 0) => exports.cfUneven(cf, r, (x, y) => exports.pv(x, y), s);
exports.pvUneven = (cf, r, s = 0) => exports.cfUneven(cf, r, (x, y) => exports.pv(x, y), s);
exports.cfUneven = (cf, r, f, s = 0) => {
if (cf.length === 0) {
return s;
}
const tail = cf.slice(1, cf.length);
const [c, n] = cf[0];
return exports.cfUneven(tail, r, f, s + c * f(r, n));
};