100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -7.830395539294896284374098908998501218003 \cdot 10^{46}:\\
\;\;\;\;100 \cdot \left(\frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i} \cdot n\right)\\
\mathbf{elif}\;n \le -923116208805473759022125299007488:\\
\;\;\;\;100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\
\mathbf{elif}\;n \le -2.029536570794657546201733566704206168652:\\
\;\;\;\;100 \cdot \left(\frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i} \cdot n\right)\\
\mathbf{elif}\;n \le -8.008038266577731525693186096802171747635 \cdot 10^{-273}:\\
\;\;\;\;100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\
\mathbf{elif}\;n \le 3.826192419795082167735182907652910573971 \cdot 10^{-180}:\\
\;\;\;\;100 \cdot \frac{\left(1 \cdot i + \left(\log 1 \cdot n + 1\right)\right) - 1}{\frac{i}{n}}\\
\mathbf{else}:\\
\;\;\;\;100 \cdot \left(\frac{\left(1 \cdot i + \left(0.5 \cdot {i}^{2} + \log 1 \cdot n\right)\right) - 0.5 \cdot \left({i}^{2} \cdot \log 1\right)}{i} \cdot n\right)\\
\end{array}double f(double i, double n) {
double r133787 = 100.0;
double r133788 = 1.0;
double r133789 = i;
double r133790 = n;
double r133791 = r133789 / r133790;
double r133792 = r133788 + r133791;
double r133793 = pow(r133792, r133790);
double r133794 = r133793 - r133788;
double r133795 = r133794 / r133791;
double r133796 = r133787 * r133795;
return r133796;
}
double f(double i, double n) {
double r133797 = n;
double r133798 = -7.830395539294896e+46;
bool r133799 = r133797 <= r133798;
double r133800 = 100.0;
double r133801 = 1.0;
double r133802 = i;
double r133803 = r133801 * r133802;
double r133804 = 0.5;
double r133805 = 2.0;
double r133806 = pow(r133802, r133805);
double r133807 = r133804 * r133806;
double r133808 = log(r133801);
double r133809 = r133808 * r133797;
double r133810 = r133807 + r133809;
double r133811 = r133803 + r133810;
double r133812 = r133806 * r133808;
double r133813 = r133804 * r133812;
double r133814 = r133811 - r133813;
double r133815 = r133814 / r133802;
double r133816 = r133815 * r133797;
double r133817 = r133800 * r133816;
double r133818 = -9.231162088054738e+32;
bool r133819 = r133797 <= r133818;
double r133820 = r133802 / r133797;
double r133821 = r133801 + r133820;
double r133822 = pow(r133821, r133797);
double r133823 = r133822 - r133801;
double r133824 = r133823 / r133820;
double r133825 = r133800 * r133824;
double r133826 = -2.0295365707946575;
bool r133827 = r133797 <= r133826;
double r133828 = -8.008038266577732e-273;
bool r133829 = r133797 <= r133828;
double r133830 = 3.826192419795082e-180;
bool r133831 = r133797 <= r133830;
double r133832 = 1.0;
double r133833 = r133809 + r133832;
double r133834 = r133803 + r133833;
double r133835 = r133834 - r133801;
double r133836 = r133835 / r133820;
double r133837 = r133800 * r133836;
double r133838 = r133831 ? r133837 : r133817;
double r133839 = r133829 ? r133825 : r133838;
double r133840 = r133827 ? r133817 : r133839;
double r133841 = r133819 ? r133825 : r133840;
double r133842 = r133799 ? r133817 : r133841;
return r133842;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.5 |
|---|---|
| Target | 42.6 |
| Herbie | 21.8 |
if n < -7.830395539294896e+46 or -9.231162088054738e+32 < n < -2.0295365707946575 or 3.826192419795082e-180 < n Initial program 52.5
Taylor expanded around 0 38.8
rmApplied associate-/r/23.4
if -7.830395539294896e+46 < n < -9.231162088054738e+32 or -2.0295365707946575 < n < -8.008038266577732e-273Initial program 17.1
if -8.008038266577732e-273 < n < 3.826192419795082e-180Initial program 35.0
Taylor expanded around 0 21.7
Final simplification21.8
herbie shell --seed 2019291
(FPCore (i n)
:name "Compound Interest"
:precision binary64
: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))))