100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;i \le -0.67216965178613575:\\
\;\;\;\;100 \cdot \left(\frac{\frac{\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)\right)} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{n} + 1} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{i} \cdot \frac{\frac{\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{1}{n}}\right)\\
\mathbf{elif}\;i \le 5.4848294551835708 \cdot 10^{145}:\\
\;\;\;\;100 \cdot \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)}{\frac{i}{n}}\\
\mathbf{elif}\;i \le 3.45170537215142098 \cdot 10^{222}:\\
\;\;\;\;100 \cdot \left(\frac{\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{i} \cdot \left(\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + \left(-1 \cdot 1\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{n} + 1}} \cdot n\right)\right)\\
\mathbf{elif}\;i \le 2.74199199550633987 \cdot 10^{289}:\\
\;\;\;\;100 \cdot \frac{\frac{\frac{\left(4 \cdot i + \left(4 \cdot \left(\log 1 \cdot n\right) + 1\right)\right) + \left(-\left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)\right)}{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}{\frac{i}{n}}\\
\mathbf{else}:\\
\;\;\;\;100 \cdot \left(\frac{\frac{\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)\right)} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{n} + 1} \cdot \sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{i} \cdot \frac{\frac{\frac{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot \left(2 \cdot n\right)\right)} + \left(-\left(1 \cdot 1\right) \cdot \left(1 \cdot 1\right)\right)}}{\sqrt{{\left(1 + \frac{i}{n}\right)}^{\left(2 \cdot n\right)} + 1 \cdot 1}}}{\sqrt[3]{{\left(1 + \frac{i}{n}\right)}^{n} + 1}}}{\frac{1}{n}}\right)\\
\end{array}double f(double i, double n) {
double r281649 = 100.0;
double r281650 = 1.0;
double r281651 = i;
double r281652 = n;
double r281653 = r281651 / r281652;
double r281654 = r281650 + r281653;
double r281655 = pow(r281654, r281652);
double r281656 = r281655 - r281650;
double r281657 = r281656 / r281653;
double r281658 = r281649 * r281657;
return r281658;
}
double f(double i, double n) {
double r281659 = i;
double r281660 = -0.6721696517861357;
bool r281661 = r281659 <= r281660;
double r281662 = 100.0;
double r281663 = 1.0;
double r281664 = n;
double r281665 = r281659 / r281664;
double r281666 = r281663 + r281665;
double r281667 = 2.0;
double r281668 = r281667 * r281664;
double r281669 = r281667 * r281668;
double r281670 = pow(r281666, r281669);
double r281671 = r281663 * r281663;
double r281672 = r281671 * r281671;
double r281673 = -r281672;
double r281674 = r281670 + r281673;
double r281675 = cbrt(r281674);
double r281676 = r281675 * r281675;
double r281677 = pow(r281666, r281668);
double r281678 = r281677 + r281671;
double r281679 = sqrt(r281678);
double r281680 = r281676 / r281679;
double r281681 = pow(r281666, r281664);
double r281682 = r281681 + r281663;
double r281683 = cbrt(r281682);
double r281684 = r281683 * r281683;
double r281685 = r281680 / r281684;
double r281686 = r281685 / r281659;
double r281687 = r281675 / r281679;
double r281688 = r281687 / r281683;
double r281689 = 1.0;
double r281690 = r281689 / r281664;
double r281691 = r281688 / r281690;
double r281692 = r281686 * r281691;
double r281693 = r281662 * r281692;
double r281694 = 5.484829455183571e+145;
bool r281695 = r281659 <= r281694;
double r281696 = r281663 * r281659;
double r281697 = 0.5;
double r281698 = pow(r281659, r281667);
double r281699 = r281697 * r281698;
double r281700 = log(r281663);
double r281701 = r281700 * r281664;
double r281702 = r281699 + r281701;
double r281703 = r281696 + r281702;
double r281704 = r281698 * r281700;
double r281705 = r281697 * r281704;
double r281706 = r281703 - r281705;
double r281707 = r281706 / r281665;
double r281708 = r281662 * r281707;
double r281709 = 3.451705372151421e+222;
bool r281710 = r281659 <= r281709;
double r281711 = -r281671;
double r281712 = r281677 + r281711;
double r281713 = cbrt(r281712);
double r281714 = r281713 * r281713;
double r281715 = sqrt(r281682);
double r281716 = r281714 / r281715;
double r281717 = r281716 / r281659;
double r281718 = r281713 / r281715;
double r281719 = r281718 * r281664;
double r281720 = r281717 * r281719;
double r281721 = r281662 * r281720;
double r281722 = 2.74199199550634e+289;
bool r281723 = r281659 <= r281722;
double r281724 = 4.0;
double r281725 = r281724 * r281659;
double r281726 = 4.0;
double r281727 = r281726 * r281701;
double r281728 = r281727 + r281689;
double r281729 = r281725 + r281728;
double r281730 = r281729 + r281673;
double r281731 = r281730 / r281678;
double r281732 = r281731 / r281682;
double r281733 = r281732 / r281665;
double r281734 = r281662 * r281733;
double r281735 = r281723 ? r281734 : r281693;
double r281736 = r281710 ? r281721 : r281735;
double r281737 = r281695 ? r281708 : r281736;
double r281738 = r281661 ? r281693 : r281737;
return r281738;
}




Bits error versus i




Bits error versus n
Results
| Original | 40.9 |
|---|---|
| Target | 41.1 |
| Herbie | 32.8 |
if i < -0.6721696517861357 or 2.74199199550634e+289 < i Initial program 27.7
rmApplied flip--27.7
Simplified27.7
rmApplied flip-+27.7
Simplified27.6
Simplified27.6
rmApplied div-inv27.7
Applied add-cube-cbrt27.7
Applied add-sqr-sqrt27.7
Applied add-cube-cbrt27.7
Applied times-frac27.7
Applied times-frac27.7
Applied times-frac28.1
if -0.6721696517861357 < i < 5.484829455183571e+145Initial program 47.1
Taylor expanded around 0 34.6
if 5.484829455183571e+145 < i < 3.451705372151421e+222Initial program 32.8
rmApplied flip--32.8
Simplified32.7
rmApplied div-inv32.8
Applied add-sqr-sqrt32.8
Applied add-cube-cbrt32.8
Applied times-frac32.8
Applied times-frac32.8
Simplified32.7
if 3.451705372151421e+222 < i < 2.74199199550634e+289Initial program 31.9
rmApplied flip--31.9
Simplified31.9
rmApplied flip-+31.9
Simplified31.8
Simplified31.8
Taylor expanded around 0 33.8
Final simplification32.8
herbie shell --seed 2020024
(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))))