100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;i \le -1.1676448974447302 \cdot 10^{-14}:\\
\;\;\;\;100 \cdot \frac{\frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot {\left(\frac{i}{n} + 1\right)}^{n} - 1}{{\left(\frac{i}{n} + 1\right)}^{n} + 1}}{\frac{i}{n}}\\
\mathbf{elif}\;i \le 8.143655347585655 \cdot 10^{-238}:\\
\;\;\;\;100 \cdot \left(n \cdot \frac{\left(\frac{1}{6} \cdot \left(i \cdot \left(i \cdot i\right)\right) + \frac{1}{2} \cdot \left(i \cdot i\right)\right) + i}{i}\right)\\
\mathbf{elif}\;i \le 44.79644908506854:\\
\;\;\;\;\left(\left(\sqrt[3]{\left(\frac{\left(\frac{1}{6} \cdot \left(i \cdot \left(i \cdot i\right)\right) + \frac{1}{2} \cdot \left(i \cdot i\right)\right) + i}{\sqrt[3]{\frac{1}{n}}} \cdot \frac{1}{\sqrt[3]{\frac{1}{n}} \cdot \sqrt[3]{\frac{1}{n}}}\right) \cdot \frac{1}{i}} \cdot \sqrt[3]{\left(\frac{\left(\frac{1}{6} \cdot \left(i \cdot \left(i \cdot i\right)\right) + \frac{1}{2} \cdot \left(i \cdot i\right)\right) + i}{\sqrt[3]{\frac{1}{n}}} \cdot \frac{1}{\sqrt[3]{\frac{1}{n}} \cdot \sqrt[3]{\frac{1}{n}}}\right) \cdot \frac{1}{i}}\right) \cdot \sqrt[3]{\left(\frac{\left(\frac{1}{6} \cdot \left(i \cdot \left(i \cdot i\right)\right) + \frac{1}{2} \cdot \left(i \cdot i\right)\right) + i}{\sqrt[3]{\frac{1}{n}}} \cdot \frac{1}{\sqrt[3]{\frac{1}{n}} \cdot \sqrt[3]{\frac{1}{n}}}\right) \cdot \frac{1}{i}}\right) \cdot 100\\
\mathbf{elif}\;i \le 7.515275266640414 \cdot 10^{+254}:\\
\;\;\;\;0\\
\mathbf{elif}\;i \le 1.1905568301770126 \cdot 10^{+297}:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{i}\right)\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double i, double n) {
double r2639831 = 100.0;
double r2639832 = 1.0;
double r2639833 = i;
double r2639834 = n;
double r2639835 = r2639833 / r2639834;
double r2639836 = r2639832 + r2639835;
double r2639837 = pow(r2639836, r2639834);
double r2639838 = r2639837 - r2639832;
double r2639839 = r2639838 / r2639835;
double r2639840 = r2639831 * r2639839;
return r2639840;
}
double f(double i, double n) {
double r2639841 = i;
double r2639842 = -1.1676448974447302e-14;
bool r2639843 = r2639841 <= r2639842;
double r2639844 = 100.0;
double r2639845 = n;
double r2639846 = r2639841 / r2639845;
double r2639847 = 1.0;
double r2639848 = r2639846 + r2639847;
double r2639849 = pow(r2639848, r2639845);
double r2639850 = r2639849 * r2639849;
double r2639851 = r2639850 - r2639847;
double r2639852 = r2639849 + r2639847;
double r2639853 = r2639851 / r2639852;
double r2639854 = r2639853 / r2639846;
double r2639855 = r2639844 * r2639854;
double r2639856 = 8.143655347585655e-238;
bool r2639857 = r2639841 <= r2639856;
double r2639858 = 0.16666666666666666;
double r2639859 = r2639841 * r2639841;
double r2639860 = r2639841 * r2639859;
double r2639861 = r2639858 * r2639860;
double r2639862 = 0.5;
double r2639863 = r2639862 * r2639859;
double r2639864 = r2639861 + r2639863;
double r2639865 = r2639864 + r2639841;
double r2639866 = r2639865 / r2639841;
double r2639867 = r2639845 * r2639866;
double r2639868 = r2639844 * r2639867;
double r2639869 = 44.79644908506854;
bool r2639870 = r2639841 <= r2639869;
double r2639871 = r2639847 / r2639845;
double r2639872 = cbrt(r2639871);
double r2639873 = r2639865 / r2639872;
double r2639874 = r2639872 * r2639872;
double r2639875 = r2639847 / r2639874;
double r2639876 = r2639873 * r2639875;
double r2639877 = r2639847 / r2639841;
double r2639878 = r2639876 * r2639877;
double r2639879 = cbrt(r2639878);
double r2639880 = r2639879 * r2639879;
double r2639881 = r2639880 * r2639879;
double r2639882 = r2639881 * r2639844;
double r2639883 = 7.515275266640414e+254;
bool r2639884 = r2639841 <= r2639883;
double r2639885 = 0.0;
double r2639886 = 1.1905568301770126e+297;
bool r2639887 = r2639841 <= r2639886;
double r2639888 = r2639849 - r2639847;
double r2639889 = r2639888 / r2639841;
double r2639890 = r2639844 * r2639889;
double r2639891 = r2639845 * r2639890;
double r2639892 = r2639887 ? r2639891 : r2639885;
double r2639893 = r2639884 ? r2639885 : r2639892;
double r2639894 = r2639870 ? r2639882 : r2639893;
double r2639895 = r2639857 ? r2639868 : r2639894;
double r2639896 = r2639843 ? r2639855 : r2639895;
return r2639896;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.7 |
|---|---|
| Target | 42.3 |
| Herbie | 21.0 |
if i < -1.1676448974447302e-14Initial program 28.7
rmApplied flip--28.7
Simplified28.7
if -1.1676448974447302e-14 < i < 8.143655347585655e-238Initial program 49.6
Taylor expanded around 0 35.0
Simplified35.0
rmApplied associate-/r/16.5
if 8.143655347585655e-238 < i < 44.79644908506854Initial program 50.3
Taylor expanded around 0 30.2
Simplified30.2
rmApplied div-inv30.3
Applied *-un-lft-identity30.3
Applied times-frac15.4
rmApplied add-cube-cbrt16.1
Applied *-un-lft-identity16.1
Applied times-frac16.1
rmApplied add-cube-cbrt16.3
if 44.79644908506854 < i < 7.515275266640414e+254 or 1.1905568301770126e+297 < i Initial program 33.6
Taylor expanded around 0 29.1
if 7.515275266640414e+254 < i < 1.1905568301770126e+297Initial program 31.0
rmApplied associate-/r/31.0
Applied associate-*r*31.0
Final simplification21.0
herbie shell --seed 2019156
(FPCore (i n)
:name "Compound Interest"
:herbie-target
(* 100 (/ (- (exp (* n (if (== (+ 1 (/ i n)) 1) (/ i n) (/ (* (/ i n) (log (+ 1 (/ i n)))) (- (+ (/ i n) 1) 1))))) 1) (/ i n)))
(* 100 (/ (- (pow (+ 1 (/ i n)) n) 1) (/ i n))))