UNPKG

@nexys/math-ts

Version:

[![npm version](https://badge.fury.io/js/%40nexys%2Fmath-ts.svg)](https://www.npmjs.com/package/@nexys/math-ts) [![TavisCI](https://travis-ci.com/Nexysweb/tableau-wdc-react.svg?branch=master)](https://travis-ci.com/github/Nexysweb/math-ts) [![Deployment](

29 lines (28 loc) 1.13 kB
"use strict"; 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)); };