100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;i \le -4.890775921786639 \cdot 10^{-05}:\\
\;\;\;\;100 \cdot \frac{{\left({\left(\frac{i}{n} + 1\right)}^{n}\right)}^{3} - 1}{\frac{i}{n} \cdot \left({\left(\frac{i}{n} + 1\right)}^{n} \cdot {\left(\frac{i}{n} + 1\right)}^{n} + \left(1 + {\left(\frac{i}{n} + 1\right)}^{n}\right)\right)}\\
\mathbf{elif}\;i \le -1.4365268904089577 \cdot 10^{-258}:\\
\;\;\;\;\left(\frac{n \cdot i}{i} \cdot 100\right) \cdot \left(i \cdot \frac{1}{2} + \left(1 + \left(i \cdot i\right) \cdot \frac{1}{6}\right)\right)\\
\mathbf{elif}\;i \le 1.1743359908539163 \cdot 10^{-228}:\\
\;\;\;\;\left(\left(i \cdot i\right) \cdot n\right) \cdot \frac{50}{3} + \left(100 + i \cdot 50\right) \cdot n\\
\mathbf{elif}\;i \le 3.2268987471607203 \cdot 10^{-189}:\\
\;\;\;\;100 \cdot \left(\frac{1}{i} \cdot \sqrt[3]{\left(\left(\left(\left(i \cdot \frac{1}{2}\right) \cdot i + \left(\left(i \cdot i\right) \cdot \left(i \cdot \frac{1}{6}\right) + i\right)\right) \cdot n\right) \cdot \left(\left(\left(i \cdot \frac{1}{2}\right) \cdot i + \left(\left(i \cdot i\right) \cdot \left(i \cdot \frac{1}{6}\right) + i\right)\right) \cdot n\right)\right) \cdot \left(\left(\left(i \cdot \frac{1}{2}\right) \cdot i + \left(\left(i \cdot i\right) \cdot \left(i \cdot \frac{1}{6}\right) + i\right)\right) \cdot n\right)}\right)\\
\mathbf{elif}\;i \le 0.13449167275451146:\\
\;\;\;\;\left(\frac{n \cdot i}{i} \cdot 100\right) \cdot \left(i \cdot \frac{1}{2} + \left(1 + \left(i \cdot i\right) \cdot \frac{1}{6}\right)\right)\\
\mathbf{elif}\;i \le 7.218954252890614 \cdot 10^{+203}:\\
\;\;\;\;100 \cdot \frac{{\left({\left(\frac{i}{n} + 1\right)}^{n}\right)}^{3} - 1}{\frac{i}{n} \cdot \left({\left(\frac{i}{n} + 1\right)}^{n} \cdot {\left(\frac{i}{n} + 1\right)}^{n} + \left(1 + {\left(\frac{i}{n} + 1\right)}^{n}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;0\\
\end{array}double f(double i, double n) {
double r11875634 = 100.0;
double r11875635 = 1.0;
double r11875636 = i;
double r11875637 = n;
double r11875638 = r11875636 / r11875637;
double r11875639 = r11875635 + r11875638;
double r11875640 = pow(r11875639, r11875637);
double r11875641 = r11875640 - r11875635;
double r11875642 = r11875641 / r11875638;
double r11875643 = r11875634 * r11875642;
return r11875643;
}
double f(double i, double n) {
double r11875644 = i;
double r11875645 = -4.890775921786639e-05;
bool r11875646 = r11875644 <= r11875645;
double r11875647 = 100.0;
double r11875648 = n;
double r11875649 = r11875644 / r11875648;
double r11875650 = 1.0;
double r11875651 = r11875649 + r11875650;
double r11875652 = pow(r11875651, r11875648);
double r11875653 = 3.0;
double r11875654 = pow(r11875652, r11875653);
double r11875655 = r11875654 - r11875650;
double r11875656 = r11875652 * r11875652;
double r11875657 = r11875650 + r11875652;
double r11875658 = r11875656 + r11875657;
double r11875659 = r11875649 * r11875658;
double r11875660 = r11875655 / r11875659;
double r11875661 = r11875647 * r11875660;
double r11875662 = -1.4365268904089577e-258;
bool r11875663 = r11875644 <= r11875662;
double r11875664 = r11875648 * r11875644;
double r11875665 = r11875664 / r11875644;
double r11875666 = r11875665 * r11875647;
double r11875667 = 0.5;
double r11875668 = r11875644 * r11875667;
double r11875669 = r11875644 * r11875644;
double r11875670 = 0.16666666666666666;
double r11875671 = r11875669 * r11875670;
double r11875672 = r11875650 + r11875671;
double r11875673 = r11875668 + r11875672;
double r11875674 = r11875666 * r11875673;
double r11875675 = 1.1743359908539163e-228;
bool r11875676 = r11875644 <= r11875675;
double r11875677 = r11875669 * r11875648;
double r11875678 = 16.666666666666668;
double r11875679 = r11875677 * r11875678;
double r11875680 = 50.0;
double r11875681 = r11875644 * r11875680;
double r11875682 = r11875647 + r11875681;
double r11875683 = r11875682 * r11875648;
double r11875684 = r11875679 + r11875683;
double r11875685 = 3.2268987471607203e-189;
bool r11875686 = r11875644 <= r11875685;
double r11875687 = r11875650 / r11875644;
double r11875688 = r11875668 * r11875644;
double r11875689 = r11875644 * r11875670;
double r11875690 = r11875669 * r11875689;
double r11875691 = r11875690 + r11875644;
double r11875692 = r11875688 + r11875691;
double r11875693 = r11875692 * r11875648;
double r11875694 = r11875693 * r11875693;
double r11875695 = r11875694 * r11875693;
double r11875696 = cbrt(r11875695);
double r11875697 = r11875687 * r11875696;
double r11875698 = r11875647 * r11875697;
double r11875699 = 0.13449167275451146;
bool r11875700 = r11875644 <= r11875699;
double r11875701 = 7.218954252890614e+203;
bool r11875702 = r11875644 <= r11875701;
double r11875703 = 0.0;
double r11875704 = r11875702 ? r11875661 : r11875703;
double r11875705 = r11875700 ? r11875674 : r11875704;
double r11875706 = r11875686 ? r11875698 : r11875705;
double r11875707 = r11875676 ? r11875684 : r11875706;
double r11875708 = r11875663 ? r11875674 : r11875707;
double r11875709 = r11875646 ? r11875661 : r11875708;
return r11875709;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.3 |
|---|---|
| Target | 42.4 |
| Herbie | 20.1 |
if i < -4.890775921786639e-05 or 0.13449167275451146 < i < 7.218954252890614e+203Initial program 27.8
rmApplied flip3--27.8
Applied associate-/l/27.8
if -4.890775921786639e-05 < i < -1.4365268904089577e-258 or 3.2268987471607203e-189 < i < 0.13449167275451146Initial program 50.6
Taylor expanded around 0 29.3
Simplified29.3
rmApplied div-inv29.3
Applied *-un-lft-identity29.3
Applied times-frac15.0
Simplified15.0
rmApplied associate-*l*15.0
Applied associate-*r*15.0
Applied *-un-lft-identity15.0
Applied distribute-rgt-out15.0
Applied distribute-lft-out15.0
Applied associate-*l*15.0
rmApplied *-commutative15.0
Applied associate-*r*15.0
Applied associate-*r*15.0
Applied associate-*r*15.0
Simplified14.9
if -1.4365268904089577e-258 < i < 1.1743359908539163e-228Initial program 47.7
Taylor expanded around 0 41.5
Simplified41.5
rmApplied div-inv41.5
Applied *-un-lft-identity41.5
Applied times-frac16.9
Simplified16.9
rmApplied associate-*l*16.9
Applied associate-*r*16.9
Applied *-un-lft-identity16.9
Applied distribute-rgt-out16.9
Applied distribute-lft-out16.9
Applied associate-*l*16.9
Taylor expanded around 0 15.5
Simplified15.5
if 1.1743359908539163e-228 < i < 3.2268987471607203e-189Initial program 48.7
Taylor expanded around 0 37.0
Simplified37.0
rmApplied div-inv37.0
Applied *-un-lft-identity37.0
Applied times-frac17.6
Simplified17.6
rmApplied add-cbrt-cube37.7
Applied add-cbrt-cube48.7
Applied cbrt-unprod48.7
Simplified27.2
if 7.218954252890614e+203 < i Initial program 30.8
Taylor expanded around 0 30.5
Final simplification20.1
herbie shell --seed 2019158
(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))))