100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;n \le -1.496898897117080818951261662080240322195 \cdot 10^{97}:\\
\;\;\;\;\left(n \cdot \left(\left(\sqrt[3]{\frac{\log 1 \cdot n + \left(\left(i \cdot 1 + \left(i \cdot i\right) \cdot 0.5\right) - \log 1 \cdot \left(\left(i \cdot i\right) \cdot 0.5\right)\right)}{i}} \cdot \sqrt[3]{\frac{\log 1 \cdot n + \left(\left(i \cdot 1 + \left(i \cdot i\right) \cdot 0.5\right) - \log 1 \cdot \left(\left(i \cdot i\right) \cdot 0.5\right)\right)}{i}}\right) \cdot \sqrt[3]{\frac{\log 1 \cdot n + \left(\left(i \cdot 1 + \left(i \cdot i\right) \cdot 0.5\right) - \log 1 \cdot \left(\left(i \cdot i\right) \cdot 0.5\right)\right)}{i}}\right)\right) \cdot 100\\
\mathbf{elif}\;n \le -3.085998543664637255444788181328484588588 \cdot 10^{59}:\\
\;\;\;\;\left(\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{i} \cdot 100\right) \cdot n\\
\mathbf{elif}\;n \le -2.461738487841221623142473617917858064175:\\
\;\;\;\;\left(n \cdot \left(\left(\sqrt[3]{\frac{\log 1 \cdot n + \left(\left(i \cdot 1 + \left(i \cdot i\right) \cdot 0.5\right) - \log 1 \cdot \left(\left(i \cdot i\right) \cdot 0.5\right)\right)}{i}} \cdot \sqrt[3]{\frac{\log 1 \cdot n + \left(\left(i \cdot 1 + \left(i \cdot i\right) \cdot 0.5\right) - \log 1 \cdot \left(\left(i \cdot i\right) \cdot 0.5\right)\right)}{i}}\right) \cdot \sqrt[3]{\frac{\log 1 \cdot n + \left(\left(i \cdot 1 + \left(i \cdot i\right) \cdot 0.5\right) - \log 1 \cdot \left(\left(i \cdot i\right) \cdot 0.5\right)\right)}{i}}\right)\right) \cdot 100\\
\mathbf{elif}\;n \le -3.388139377181462070651587205567840486657 \cdot 10^{-307}:\\
\;\;\;\;100 \cdot \left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)\\
\mathbf{elif}\;n \le 4.930404890743995467239903225253781019029 \cdot 10^{-103}:\\
\;\;\;\;100 \cdot \frac{\left(\left(1 + i \cdot 1\right) + \log 1 \cdot n\right) - 1}{\frac{i}{n}}\\
\mathbf{else}:\\
\;\;\;\;\left(n \cdot \left(\left(\sqrt[3]{\frac{\log 1 \cdot n + \left(\left(i \cdot 1 + \left(i \cdot i\right) \cdot 0.5\right) - \log 1 \cdot \left(\left(i \cdot i\right) \cdot 0.5\right)\right)}{i}} \cdot \sqrt[3]{\frac{\log 1 \cdot n + \left(\left(i \cdot 1 + \left(i \cdot i\right) \cdot 0.5\right) - \log 1 \cdot \left(\left(i \cdot i\right) \cdot 0.5\right)\right)}{i}}\right) \cdot \sqrt[3]{\frac{\log 1 \cdot n + \left(\left(i \cdot 1 + \left(i \cdot i\right) \cdot 0.5\right) - \log 1 \cdot \left(\left(i \cdot i\right) \cdot 0.5\right)\right)}{i}}\right)\right) \cdot 100\\
\end{array}double f(double i, double n) {
double r7466940 = 100.0;
double r7466941 = 1.0;
double r7466942 = i;
double r7466943 = n;
double r7466944 = r7466942 / r7466943;
double r7466945 = r7466941 + r7466944;
double r7466946 = pow(r7466945, r7466943);
double r7466947 = r7466946 - r7466941;
double r7466948 = r7466947 / r7466944;
double r7466949 = r7466940 * r7466948;
return r7466949;
}
double f(double i, double n) {
double r7466950 = n;
double r7466951 = -1.4968988971170808e+97;
bool r7466952 = r7466950 <= r7466951;
double r7466953 = 1.0;
double r7466954 = log(r7466953);
double r7466955 = r7466954 * r7466950;
double r7466956 = i;
double r7466957 = r7466956 * r7466953;
double r7466958 = r7466956 * r7466956;
double r7466959 = 0.5;
double r7466960 = r7466958 * r7466959;
double r7466961 = r7466957 + r7466960;
double r7466962 = r7466954 * r7466960;
double r7466963 = r7466961 - r7466962;
double r7466964 = r7466955 + r7466963;
double r7466965 = r7466964 / r7466956;
double r7466966 = cbrt(r7466965);
double r7466967 = r7466966 * r7466966;
double r7466968 = r7466967 * r7466966;
double r7466969 = r7466950 * r7466968;
double r7466970 = 100.0;
double r7466971 = r7466969 * r7466970;
double r7466972 = -3.0859985436646373e+59;
bool r7466973 = r7466950 <= r7466972;
double r7466974 = r7466956 / r7466950;
double r7466975 = r7466974 + r7466953;
double r7466976 = pow(r7466975, r7466950);
double r7466977 = r7466976 - r7466953;
double r7466978 = r7466977 / r7466956;
double r7466979 = r7466978 * r7466970;
double r7466980 = r7466979 * r7466950;
double r7466981 = -2.4617384878412216;
bool r7466982 = r7466950 <= r7466981;
double r7466983 = -3.388139377181462e-307;
bool r7466984 = r7466950 <= r7466983;
double r7466985 = r7466976 / r7466974;
double r7466986 = r7466953 / r7466974;
double r7466987 = r7466985 - r7466986;
double r7466988 = r7466970 * r7466987;
double r7466989 = 4.930404890743995e-103;
bool r7466990 = r7466950 <= r7466989;
double r7466991 = 1.0;
double r7466992 = r7466991 + r7466957;
double r7466993 = r7466992 + r7466955;
double r7466994 = r7466993 - r7466953;
double r7466995 = r7466994 / r7466974;
double r7466996 = r7466970 * r7466995;
double r7466997 = r7466990 ? r7466996 : r7466971;
double r7466998 = r7466984 ? r7466988 : r7466997;
double r7466999 = r7466982 ? r7466971 : r7466998;
double r7467000 = r7466973 ? r7466980 : r7466999;
double r7467001 = r7466952 ? r7466971 : r7467000;
return r7467001;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.9 |
|---|---|
| Target | 43.1 |
| Herbie | 22.0 |
if n < -1.4968988971170808e+97 or -3.0859985436646373e+59 < n < -2.4617384878412216 or 4.930404890743995e-103 < n Initial program 53.8
Taylor expanded around 0 39.5
Simplified39.5
rmApplied associate-/r/20.8
rmApplied add-cube-cbrt20.9
if -1.4968988971170808e+97 < n < -3.0859985436646373e+59Initial program 36.2
rmApplied associate-/r/36.1
Applied associate-*r*36.1
if -2.4617384878412216 < n < -3.388139377181462e-307Initial program 14.9
rmApplied div-sub15.0
if -3.388139377181462e-307 < n < 4.930404890743995e-103Initial program 44.9
Taylor expanded around 0 34.1
Final simplification22.0
herbie shell --seed 2019168
(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))))