100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -6.142887410522617750964470107151729366347 \cdot 10^{122}:\\
\;\;\;\;n \cdot \frac{100 \cdot \left(\left(n - i \cdot \left(i \cdot 0.5\right)\right) \cdot \log 1 + i \cdot \left(i \cdot 0.5 + 1\right)\right)}{i}\\
\mathbf{elif}\;n \le -8.238753264410919988214239002998485354106 \cdot 10^{106}:\\
\;\;\;\;\left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{i} \cdot n - \frac{1}{\frac{i}{n}}\right) \cdot 100\\
\mathbf{elif}\;n \le -1.859429087248036349677704492933116853237:\\
\;\;\;\;100 \cdot \left(\frac{\frac{\sqrt[3]{\left(n - i \cdot \left(i \cdot 0.5\right)\right) \cdot \log 1 + i \cdot \left(i \cdot 0.5 + 1\right)} \cdot \sqrt[3]{\left(n - i \cdot \left(i \cdot 0.5\right)\right) \cdot \log 1 + i \cdot \left(i \cdot 0.5 + 1\right)}}{\sqrt[3]{i}}}{\sqrt[3]{i}} \cdot \frac{n \cdot \sqrt[3]{\left(n - i \cdot \left(i \cdot 0.5\right)\right) \cdot \log 1 + i \cdot \left(i \cdot 0.5 + 1\right)}}{\sqrt[3]{i}}\right)\\
\mathbf{elif}\;n \le 1.418329784511636358016859139215844899283 \cdot 10^{-154}:\\
\;\;\;\;\frac{\left(\log 1 \cdot n + \left(1 + i \cdot 1\right)\right) - 1}{\frac{i}{n}} \cdot 100\\
\mathbf{else}:\\
\;\;\;\;n \cdot \frac{100 \cdot \left(\left(n - i \cdot \left(i \cdot 0.5\right)\right) \cdot \log 1 + i \cdot \left(i \cdot 0.5 + 1\right)\right)}{i}\\
\end{array}double f(double i, double n) {
double r150972 = 100.0;
double r150973 = 1.0;
double r150974 = i;
double r150975 = n;
double r150976 = r150974 / r150975;
double r150977 = r150973 + r150976;
double r150978 = pow(r150977, r150975);
double r150979 = r150978 - r150973;
double r150980 = r150979 / r150976;
double r150981 = r150972 * r150980;
return r150981;
}
double f(double i, double n) {
double r150982 = n;
double r150983 = -6.142887410522618e+122;
bool r150984 = r150982 <= r150983;
double r150985 = 100.0;
double r150986 = i;
double r150987 = 0.5;
double r150988 = r150986 * r150987;
double r150989 = r150986 * r150988;
double r150990 = r150982 - r150989;
double r150991 = 1.0;
double r150992 = log(r150991);
double r150993 = r150990 * r150992;
double r150994 = r150988 + r150991;
double r150995 = r150986 * r150994;
double r150996 = r150993 + r150995;
double r150997 = r150985 * r150996;
double r150998 = r150997 / r150986;
double r150999 = r150982 * r150998;
double r151000 = -8.23875326441092e+106;
bool r151001 = r150982 <= r151000;
double r151002 = r150986 / r150982;
double r151003 = r151002 + r150991;
double r151004 = pow(r151003, r150982);
double r151005 = r151004 / r150986;
double r151006 = r151005 * r150982;
double r151007 = r150991 / r151002;
double r151008 = r151006 - r151007;
double r151009 = r151008 * r150985;
double r151010 = -1.8594290872480363;
bool r151011 = r150982 <= r151010;
double r151012 = cbrt(r150996);
double r151013 = r151012 * r151012;
double r151014 = cbrt(r150986);
double r151015 = r151013 / r151014;
double r151016 = r151015 / r151014;
double r151017 = r150982 * r151012;
double r151018 = r151017 / r151014;
double r151019 = r151016 * r151018;
double r151020 = r150985 * r151019;
double r151021 = 1.4183297845116364e-154;
bool r151022 = r150982 <= r151021;
double r151023 = r150992 * r150982;
double r151024 = 1.0;
double r151025 = r150986 * r150991;
double r151026 = r151024 + r151025;
double r151027 = r151023 + r151026;
double r151028 = r151027 - r150991;
double r151029 = r151028 / r151002;
double r151030 = r151029 * r150985;
double r151031 = r151022 ? r151030 : r150999;
double r151032 = r151011 ? r151020 : r151031;
double r151033 = r151001 ? r151009 : r151032;
double r151034 = r150984 ? r150999 : r151033;
return r151034;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.8 |
|---|---|
| Target | 42.8 |
| Herbie | 23.6 |
if n < -6.142887410522618e+122 or 1.4183297845116364e-154 < n Initial program 56.2
Taylor expanded around 0 40.5
Simplified40.5
rmApplied associate-/r/21.1
Applied associate-*r*21.1
Simplified21.1
if -6.142887410522618e+122 < n < -8.23875326441092e+106Initial program 40.4
rmApplied div-sub40.4
Simplified40.1
if -8.23875326441092e+106 < n < -1.8594290872480363Initial program 36.5
Taylor expanded around 0 34.8
Simplified34.8
rmApplied *-un-lft-identity34.8
Applied add-cube-cbrt35.3
Applied times-frac35.3
Applied add-cube-cbrt34.9
Applied times-frac29.1
Simplified29.1
Simplified29.1
if -1.8594290872480363 < n < 1.4183297845116364e-154Initial program 23.6
Taylor expanded around 0 24.6
Simplified24.6
Final simplification23.6
herbie shell --seed 2019195
(FPCore (i n)
:name "Compound Interest"
:herbie-target
(* 100.0 (/ (- (exp (* n (if (== (+ 1.0 (/ i n)) 1.0) (/ i n) (/ (* (/ i n) (log (+ 1.0 (/ i n)))) (- (+ (/ i n) 1.0) 1.0))))) 1.0) (/ i n)))
(* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n))))