100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -5.464773096034009611019906036964894498925 \cdot 10^{59}:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{\left(\left(i \cdot i\right) \cdot 0.5 - \left(\left(i \cdot i\right) \cdot 0.5\right) \cdot \log 1\right) + \left(i \cdot 1 + \log 1 \cdot n\right)}{i}\right)\\
\mathbf{elif}\;n \le -499596521052505172268102593940553728:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i}\right)\\
\mathbf{elif}\;n \le -15240705750258725123260416:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{\left(\left(i \cdot i\right) \cdot 0.5 - \left(\left(i \cdot i\right) \cdot 0.5\right) \cdot \log 1\right) + \left(i \cdot 1 + \log 1 \cdot n\right)}{i}\right)\\
\mathbf{elif}\;n \le 8.439481621089909706689165353901153669925 \cdot 10^{-297}:\\
\;\;\;\;\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right) \cdot 100\\
\mathbf{else}:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{\left(\left(i \cdot i\right) \cdot 0.5 - \left(\left(i \cdot i\right) \cdot 0.5\right) \cdot \log 1\right) + \left(i \cdot 1 + \log 1 \cdot n\right)}{i}\right)\\
\end{array}double f(double i, double n) {
double r6316965 = 100.0;
double r6316966 = 1.0;
double r6316967 = i;
double r6316968 = n;
double r6316969 = r6316967 / r6316968;
double r6316970 = r6316966 + r6316969;
double r6316971 = pow(r6316970, r6316968);
double r6316972 = r6316971 - r6316966;
double r6316973 = r6316972 / r6316969;
double r6316974 = r6316965 * r6316973;
return r6316974;
}
double f(double i, double n) {
double r6316975 = n;
double r6316976 = -5.46477309603401e+59;
bool r6316977 = r6316975 <= r6316976;
double r6316978 = 100.0;
double r6316979 = i;
double r6316980 = r6316979 * r6316979;
double r6316981 = 0.5;
double r6316982 = r6316980 * r6316981;
double r6316983 = 1.0;
double r6316984 = log(r6316983);
double r6316985 = r6316982 * r6316984;
double r6316986 = r6316982 - r6316985;
double r6316987 = r6316979 * r6316983;
double r6316988 = r6316984 * r6316975;
double r6316989 = r6316987 + r6316988;
double r6316990 = r6316986 + r6316989;
double r6316991 = r6316990 / r6316979;
double r6316992 = r6316978 * r6316991;
double r6316993 = r6316975 * r6316992;
double r6316994 = -4.995965210525052e+35;
bool r6316995 = r6316975 <= r6316994;
double r6316996 = r6316979 / r6316975;
double r6316997 = r6316983 + r6316996;
double r6316998 = pow(r6316997, r6316975);
double r6316999 = r6316998 - r6316983;
double r6317000 = r6316999 / r6316979;
double r6317001 = r6316978 * r6317000;
double r6317002 = r6316975 * r6317001;
double r6317003 = -1.5240705750258725e+25;
bool r6317004 = r6316975 <= r6317003;
double r6317005 = 8.43948162108991e-297;
bool r6317006 = r6316975 <= r6317005;
double r6317007 = r6316998 / r6316996;
double r6317008 = r6316983 / r6316996;
double r6317009 = r6317007 - r6317008;
double r6317010 = r6317009 * r6316978;
double r6317011 = r6317006 ? r6317010 : r6316993;
double r6317012 = r6317004 ? r6316993 : r6317011;
double r6317013 = r6316995 ? r6317002 : r6317012;
double r6317014 = r6316977 ? r6316993 : r6317013;
return r6317014;
}




Bits error versus i




Bits error versus n
Results
| Original | 43.0 |
|---|---|
| Target | 42.8 |
| Herbie | 24.3 |
if n < -5.46477309603401e+59 or -4.995965210525052e+35 < n < -1.5240705750258725e+25 or 8.43948162108991e-297 < n Initial program 52.3
Taylor expanded around 0 39.8
Simplified39.8
rmApplied associate-/r/25.8
Applied associate-*r*25.8
if -5.46477309603401e+59 < n < -4.995965210525052e+35Initial program 34.9
rmApplied associate-/r/34.8
Applied associate-*r*34.8
if -1.5240705750258725e+25 < n < 8.43948162108991e-297Initial program 18.9
rmApplied div-sub18.9
Final simplification24.3
herbie shell --seed 2019172
(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))))