100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -4.12718938658690470334225094125126747311 \cdot 10^{214}:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\
\mathbf{elif}\;n \le -1.767552428992892694746701860906965261931 \cdot 10^{78}:\\
\;\;\;\;100 \cdot \left(\frac{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n}}}{\frac{1}{n}} \cdot \frac{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n}}}{i} - \frac{1}{\frac{i}{n}}\right)\\
\mathbf{elif}\;n \le -7.520459214308253406879712470442768842157 \cdot 10^{45}:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\
\mathbf{elif}\;n \le -0.04879868666602225901751666015115915797651:\\
\;\;\;\;\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - n \cdot \frac{1}{i}\right) \cdot 100\\
\mathbf{elif}\;n \le 6.462722036125863080209583318691171911515 \cdot 10^{-151}:\\
\;\;\;\;\left(\frac{100 \cdot \log 1}{\frac{i}{n}} + \left(\frac{50}{\frac{i}{\left(\log 1 \cdot n\right) \cdot \left(\log 1 \cdot n\right)}} + n \cdot \left(100 \cdot \log 1\right)\right)\right) \cdot n\\
\mathbf{else}:\\
\;\;\;\;n \cdot \left(100 \cdot \frac{\left(\log 1 \cdot n + i \cdot 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - 0.5 \cdot \left(\left(i \cdot i\right) \cdot \log 1\right)\right)}{i}\right)\\
\end{array}double f(double i, double n) {
double r6388754 = 100.0;
double r6388755 = 1.0;
double r6388756 = i;
double r6388757 = n;
double r6388758 = r6388756 / r6388757;
double r6388759 = r6388755 + r6388758;
double r6388760 = pow(r6388759, r6388757);
double r6388761 = r6388760 - r6388755;
double r6388762 = r6388761 / r6388758;
double r6388763 = r6388754 * r6388762;
return r6388763;
}
double f(double i, double n) {
double r6388764 = n;
double r6388765 = -4.1271893865869047e+214;
bool r6388766 = r6388764 <= r6388765;
double r6388767 = 100.0;
double r6388768 = 1.0;
double r6388769 = log(r6388768);
double r6388770 = r6388769 * r6388764;
double r6388771 = i;
double r6388772 = r6388771 * r6388768;
double r6388773 = r6388770 + r6388772;
double r6388774 = 0.5;
double r6388775 = r6388771 * r6388771;
double r6388776 = r6388774 * r6388775;
double r6388777 = r6388775 * r6388769;
double r6388778 = r6388774 * r6388777;
double r6388779 = r6388776 - r6388778;
double r6388780 = r6388773 + r6388779;
double r6388781 = r6388780 / r6388771;
double r6388782 = r6388767 * r6388781;
double r6388783 = r6388764 * r6388782;
double r6388784 = -1.7675524289928927e+78;
bool r6388785 = r6388764 <= r6388784;
double r6388786 = r6388771 / r6388764;
double r6388787 = r6388768 + r6388786;
double r6388788 = pow(r6388787, r6388764);
double r6388789 = sqrt(r6388788);
double r6388790 = 1.0;
double r6388791 = r6388790 / r6388764;
double r6388792 = r6388789 / r6388791;
double r6388793 = r6388789 / r6388771;
double r6388794 = r6388792 * r6388793;
double r6388795 = r6388768 / r6388786;
double r6388796 = r6388794 - r6388795;
double r6388797 = r6388767 * r6388796;
double r6388798 = -7.520459214308253e+45;
bool r6388799 = r6388764 <= r6388798;
double r6388800 = -0.04879868666602226;
bool r6388801 = r6388764 <= r6388800;
double r6388802 = r6388788 / r6388786;
double r6388803 = r6388768 / r6388771;
double r6388804 = r6388764 * r6388803;
double r6388805 = r6388802 - r6388804;
double r6388806 = r6388805 * r6388767;
double r6388807 = 6.462722036125863e-151;
bool r6388808 = r6388764 <= r6388807;
double r6388809 = r6388767 * r6388769;
double r6388810 = r6388809 / r6388786;
double r6388811 = 50.0;
double r6388812 = r6388770 * r6388770;
double r6388813 = r6388771 / r6388812;
double r6388814 = r6388811 / r6388813;
double r6388815 = r6388764 * r6388809;
double r6388816 = r6388814 + r6388815;
double r6388817 = r6388810 + r6388816;
double r6388818 = r6388817 * r6388764;
double r6388819 = r6388808 ? r6388818 : r6388783;
double r6388820 = r6388801 ? r6388806 : r6388819;
double r6388821 = r6388799 ? r6388783 : r6388820;
double r6388822 = r6388785 ? r6388797 : r6388821;
double r6388823 = r6388766 ? r6388783 : r6388822;
return r6388823;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.8 |
|---|---|
| Target | 42.5 |
| Herbie | 23.3 |
if n < -4.1271893865869047e+214 or -1.7675524289928927e+78 < n < -7.520459214308253e+45 or 6.462722036125863e-151 < n Initial program 56.8
rmApplied associate-/r/56.5
Applied associate-*r*56.5
Taylor expanded around 0 20.6
Simplified20.6
if -4.1271893865869047e+214 < n < -1.7675524289928927e+78Initial program 42.3
rmApplied div-sub42.3
rmApplied div-inv42.2
Applied add-sqr-sqrt42.2
Applied times-frac42.1
if -7.520459214308253e+45 < n < -0.04879868666602226Initial program 32.8
rmApplied div-sub32.8
rmApplied associate-/r/33.1
if -0.04879868666602226 < n < 6.462722036125863e-151Initial program 24.4
rmApplied associate-/r/24.7
Applied associate-*r*24.7
Taylor expanded around 0 18.3
Simplified18.3
Final simplification23.3
herbie shell --seed 2019192
(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))))