tt_RATE function
dynamic
tt_RATE(
- dynamic v1,
- dynamic v2,
- dynamic v3
tt_RATE(nper, pmt, pv): interest rate per period (Newton-Raphson approximation)
Implementation
dynamic tt_RATE(dynamic v1, dynamic v2, dynamic v3) {
final nper = varToInt(v1);
final pmt = varToDouble(v2);
final pv = varToDouble(v3);
var rate = 0.1;
for (var i = 0; i < 100; i++) {
final f = pv * pow(1 + rate, nper) + pmt * (pow(1 + rate, nper) - 1) / rate;
final df = pv * nper * pow(1 + rate, nper - 1) +
pmt * (nper * rate * pow(1 + rate, nper - 1) * rate - (pow(1 + rate, nper) - 1)) /
(rate * rate);
if (df.abs() < 1e-12) break;
rate -= f / df;
if (f.abs() < 1e-8) break;
}
return rate;
}