100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\begin{array}{l}
\mathbf{if}\;i \le -7.524185979796087207979591237813621340536 \cdot 10^{-8}:\\
\;\;\;\;100 \cdot \frac{\frac{\left({\left(\frac{i}{n} + 1\right)}^{n} \cdot {\left(\frac{i}{n} + 1\right)}^{n}\right) \cdot {\left(\frac{i}{n} + 1\right)}^{n} - \left(1 \cdot 1\right) \cdot 1}{{\left(\frac{i}{n} + 1\right)}^{n} \cdot {\left(\frac{i}{n} + 1\right)}^{n} + \left({\left(\frac{i}{n} + 1\right)}^{n} + 1\right) \cdot 1}}{\frac{i}{n}}\\
\mathbf{elif}\;i \le 1.943238893158424573925913136918097734451:\\
\;\;\;\;\left(100 \cdot \frac{\left(i \cdot 1 + n \cdot \log 1\right) + \left(0.5 \cdot \left(i \cdot i\right) - \left(0.5 \cdot \left(i \cdot i\right)\right) \cdot \log 1\right)}{i}\right) \cdot n\\
\mathbf{elif}\;i \le 1.540498293983815894197419121524134450797 \cdot 10^{208}:\\
\;\;\;\;\left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right) \cdot 100\\
\mathbf{else}:\\
\;\;\;\;100 \cdot \frac{\left(\left(1 + i \cdot 1\right) + n \cdot \log 1\right) - 1}{\frac{i}{n}}\\
\end{array}double f(double i, double n) {
double r9817033 = 100.0;
double r9817034 = 1.0;
double r9817035 = i;
double r9817036 = n;
double r9817037 = r9817035 / r9817036;
double r9817038 = r9817034 + r9817037;
double r9817039 = pow(r9817038, r9817036);
double r9817040 = r9817039 - r9817034;
double r9817041 = r9817040 / r9817037;
double r9817042 = r9817033 * r9817041;
return r9817042;
}
double f(double i, double n) {
double r9817043 = i;
double r9817044 = -7.524185979796087e-08;
bool r9817045 = r9817043 <= r9817044;
double r9817046 = 100.0;
double r9817047 = n;
double r9817048 = r9817043 / r9817047;
double r9817049 = 1.0;
double r9817050 = r9817048 + r9817049;
double r9817051 = pow(r9817050, r9817047);
double r9817052 = r9817051 * r9817051;
double r9817053 = r9817052 * r9817051;
double r9817054 = r9817049 * r9817049;
double r9817055 = r9817054 * r9817049;
double r9817056 = r9817053 - r9817055;
double r9817057 = r9817051 + r9817049;
double r9817058 = r9817057 * r9817049;
double r9817059 = r9817052 + r9817058;
double r9817060 = r9817056 / r9817059;
double r9817061 = r9817060 / r9817048;
double r9817062 = r9817046 * r9817061;
double r9817063 = 1.9432388931584246;
bool r9817064 = r9817043 <= r9817063;
double r9817065 = r9817043 * r9817049;
double r9817066 = log(r9817049);
double r9817067 = r9817047 * r9817066;
double r9817068 = r9817065 + r9817067;
double r9817069 = 0.5;
double r9817070 = r9817043 * r9817043;
double r9817071 = r9817069 * r9817070;
double r9817072 = r9817071 * r9817066;
double r9817073 = r9817071 - r9817072;
double r9817074 = r9817068 + r9817073;
double r9817075 = r9817074 / r9817043;
double r9817076 = r9817046 * r9817075;
double r9817077 = r9817076 * r9817047;
double r9817078 = 1.540498293983816e+208;
bool r9817079 = r9817043 <= r9817078;
double r9817080 = r9817051 / r9817048;
double r9817081 = r9817049 / r9817048;
double r9817082 = r9817080 - r9817081;
double r9817083 = r9817082 * r9817046;
double r9817084 = 1.0;
double r9817085 = r9817084 + r9817065;
double r9817086 = r9817085 + r9817067;
double r9817087 = r9817086 - r9817049;
double r9817088 = r9817087 / r9817048;
double r9817089 = r9817046 * r9817088;
double r9817090 = r9817079 ? r9817083 : r9817089;
double r9817091 = r9817064 ? r9817077 : r9817090;
double r9817092 = r9817045 ? r9817062 : r9817091;
return r9817092;
}




Bits error versus i




Bits error versus n
Results
| Original | 42.9 |
|---|---|
| Target | 42.1 |
| Herbie | 22.2 |
if i < -7.524185979796087e-08Initial program 30.2
rmApplied flip3--30.2
Simplified30.2
Simplified30.2
if -7.524185979796087e-08 < i < 1.9432388931584246Initial program 50.4
Taylor expanded around 0 34.1
Simplified34.1
rmApplied associate-/r/17.0
Applied associate-*r*17.0
if 1.9432388931584246 < i < 1.540498293983816e+208Initial program 30.7
rmApplied div-sub30.7
if 1.540498293983816e+208 < i Initial program 31.8
Taylor expanded around 0 34.0
Final simplification22.2
herbie shell --seed 2019171
(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))))