Compound Interest

Percentage Accurate: 28.7% → 94.3%
Time: 11.9s
Alternatives: 12
Speedup: 8.1×

Specification

?
\[\begin{array}{l} \\ 100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \end{array} \]
(FPCore (i n)
 :precision binary64
 (* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n))))
double code(double i, double n) {
	return 100.0 * ((pow((1.0 + (i / n)), n) - 1.0) / (i / n));
}
real(8) function code(i, n)
    real(8), intent (in) :: i
    real(8), intent (in) :: n
    code = 100.0d0 * ((((1.0d0 + (i / n)) ** n) - 1.0d0) / (i / n))
end function
public static double code(double i, double n) {
	return 100.0 * ((Math.pow((1.0 + (i / n)), n) - 1.0) / (i / n));
}
def code(i, n):
	return 100.0 * ((math.pow((1.0 + (i / n)), n) - 1.0) / (i / n))
function code(i, n)
	return Float64(100.0 * Float64(Float64((Float64(1.0 + Float64(i / n)) ^ n) - 1.0) / Float64(i / n)))
end
function tmp = code(i, n)
	tmp = 100.0 * ((((1.0 + (i / n)) ^ n) - 1.0) / (i / n));
end
code[i_, n_] := N[(100.0 * N[(N[(N[Power[N[(1.0 + N[(i / n), $MachinePrecision]), $MachinePrecision], n], $MachinePrecision] - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 12 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 28.7% accurate, 1.0× speedup?

\[\begin{array}{l} \\ 100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \end{array} \]
(FPCore (i n)
 :precision binary64
 (* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n))))
double code(double i, double n) {
	return 100.0 * ((pow((1.0 + (i / n)), n) - 1.0) / (i / n));
}
real(8) function code(i, n)
    real(8), intent (in) :: i
    real(8), intent (in) :: n
    code = 100.0d0 * ((((1.0d0 + (i / n)) ** n) - 1.0d0) / (i / n))
end function
public static double code(double i, double n) {
	return 100.0 * ((Math.pow((1.0 + (i / n)), n) - 1.0) / (i / n));
}
def code(i, n):
	return 100.0 * ((math.pow((1.0 + (i / n)), n) - 1.0) / (i / n))
function code(i, n)
	return Float64(100.0 * Float64(Float64((Float64(1.0 + Float64(i / n)) ^ n) - 1.0) / Float64(i / n)))
end
function tmp = code(i, n)
	tmp = 100.0 * ((((1.0 + (i / n)) ^ n) - 1.0) / (i / n));
end
code[i_, n_] := N[(100.0 * N[(N[(N[Power[N[(1.0 + N[(i / n), $MachinePrecision]), $MachinePrecision], n], $MachinePrecision] - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}
\end{array}

Alternative 1: 94.3% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{i}{n} + 1\\ t_1 := \frac{{t\_0}^{n} - 1}{\frac{i}{n}}\\ t_2 := {t\_0}^{\left(0.5 \cdot n\right)}\\ \mathbf{if}\;t\_1 \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{\frac{i}{n}}\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\left(\frac{100}{i} \cdot \mathsf{fma}\left(t\_2, t\_2, -1\right)\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \end{array} \]
(FPCore (i n)
 :precision binary64
 (let* ((t_0 (+ (/ i n) 1.0))
        (t_1 (/ (- (pow t_0 n) 1.0) (/ i n)))
        (t_2 (pow t_0 (* 0.5 n))))
   (if (<= t_1 0.0)
     (/ (* (expm1 (* (log1p (/ i n)) n)) 100.0) (/ i n))
     (if (<= t_1 INFINITY)
       (* (* (/ 100.0 i) (fma t_2 t_2 -1.0)) n)
       (* 100.0 n)))))
double code(double i, double n) {
	double t_0 = (i / n) + 1.0;
	double t_1 = (pow(t_0, n) - 1.0) / (i / n);
	double t_2 = pow(t_0, (0.5 * n));
	double tmp;
	if (t_1 <= 0.0) {
		tmp = (expm1((log1p((i / n)) * n)) * 100.0) / (i / n);
	} else if (t_1 <= ((double) INFINITY)) {
		tmp = ((100.0 / i) * fma(t_2, t_2, -1.0)) * n;
	} else {
		tmp = 100.0 * n;
	}
	return tmp;
}
function code(i, n)
	t_0 = Float64(Float64(i / n) + 1.0)
	t_1 = Float64(Float64((t_0 ^ n) - 1.0) / Float64(i / n))
	t_2 = t_0 ^ Float64(0.5 * n)
	tmp = 0.0
	if (t_1 <= 0.0)
		tmp = Float64(Float64(expm1(Float64(log1p(Float64(i / n)) * n)) * 100.0) / Float64(i / n));
	elseif (t_1 <= Inf)
		tmp = Float64(Float64(Float64(100.0 / i) * fma(t_2, t_2, -1.0)) * n);
	else
		tmp = Float64(100.0 * n);
	end
	return tmp
end
code[i_, n_] := Block[{t$95$0 = N[(N[(i / n), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[Power[t$95$0, n], $MachinePrecision] - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Power[t$95$0, N[(0.5 * n), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[t$95$1, 0.0], N[(N[(N[(Exp[N[(N[Log[1 + N[(i / n), $MachinePrecision]], $MachinePrecision] * n), $MachinePrecision]] - 1), $MachinePrecision] * 100.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], N[(N[(N[(100.0 / i), $MachinePrecision] * N[(t$95$2 * t$95$2 + -1.0), $MachinePrecision]), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * n), $MachinePrecision]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \frac{i}{n} + 1\\
t_1 := \frac{{t\_0}^{n} - 1}{\frac{i}{n}}\\
t_2 := {t\_0}^{\left(0.5 \cdot n\right)}\\
\mathbf{if}\;t\_1 \leq 0:\\
\;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{\frac{i}{n}}\\

\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;\left(\frac{100}{i} \cdot \mathsf{fma}\left(t\_2, t\_2, -1\right)\right) \cdot n\\

\mathbf{else}:\\
\;\;\;\;100 \cdot n\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < -0.0

    1. Initial program 23.4%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      5. lower-*.f6423.4

        \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
      6. lift--.f64N/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
      7. lift-pow.f64N/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right)}{\frac{i}{n}} \]
      8. pow-to-expN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right)}{\frac{i}{n}} \]
      9. lower-expm1.f64N/A

        \[\leadsto \frac{100 \cdot \color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)}}{\frac{i}{n}} \]
      10. lower-*.f64N/A

        \[\leadsto \frac{100 \cdot \mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right)}{\frac{i}{n}} \]
      11. lift-+.f64N/A

        \[\leadsto \frac{100 \cdot \mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right)}{\frac{i}{n}} \]
      12. lower-log1p.f6498.6

        \[\leadsto \frac{100 \cdot \mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right)}{\frac{i}{n}} \]
    4. Applied rewrites98.6%

      \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{\frac{i}{n}}} \]

    if -0.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < +inf.0

    1. Initial program 97.5%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lift-/.f64N/A

        \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
      5. associate-/r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      6. lower-*.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      7. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
      8. associate-/l*N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      9. lower-*.f64N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      10. lift--.f64N/A

        \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      12. pow-to-expN/A

        \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      13. lower-expm1.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
      14. lower-*.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
      15. lift-+.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      16. lower-log1p.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      17. lower-/.f6468.2

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
    4. Applied rewrites68.2%

      \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
    5. Step-by-step derivation
      1. lift-expm1.f64N/A

        \[\leadsto \left(\color{blue}{\left(e^{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
      2. lift-*.f64N/A

        \[\leadsto \left(\left(e^{\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      3. lift-log1p.f64N/A

        \[\leadsto \left(\left(e^{\color{blue}{\log \left(1 + \frac{i}{n}\right)} \cdot n} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      4. pow-to-expN/A

        \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      5. lift-/.f64N/A

        \[\leadsto \left(\left({\left(1 + \color{blue}{\frac{i}{n}}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      6. sub-negN/A

        \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} + \left(\mathsf{neg}\left(1\right)\right)\right)} \cdot \frac{100}{i}\right) \cdot n \]
      7. lift-/.f64N/A

        \[\leadsto \left(\left({\left(1 + \color{blue}{\frac{i}{n}}\right)}^{n} + \left(\mathsf{neg}\left(1\right)\right)\right) \cdot \frac{100}{i}\right) \cdot n \]
      8. +-commutativeN/A

        \[\leadsto \left(\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} + \left(\mathsf{neg}\left(1\right)\right)\right) \cdot \frac{100}{i}\right) \cdot n \]
      9. lift-+.f64N/A

        \[\leadsto \left(\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} + \left(\mathsf{neg}\left(1\right)\right)\right) \cdot \frac{100}{i}\right) \cdot n \]
      10. sqr-powN/A

        \[\leadsto \left(\left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)} \cdot {\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)}} + \left(\mathsf{neg}\left(1\right)\right)\right) \cdot \frac{100}{i}\right) \cdot n \]
      11. lower-fma.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)}, {\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)}, \mathsf{neg}\left(1\right)\right)} \cdot \frac{100}{i}\right) \cdot n \]
    6. Applied rewrites97.8%

      \[\leadsto \left(\color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{\left(n \cdot 0.5\right)}, {\left(1 + \frac{i}{n}\right)}^{\left(n \cdot 0.5\right)}, -1\right)} \cdot \frac{100}{i}\right) \cdot n \]

    if +inf.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n))

    1. Initial program 0.0%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Taylor expanded in i around 0

      \[\leadsto \color{blue}{100 \cdot n} \]
    4. Step-by-step derivation
      1. lower-*.f6471.5

        \[\leadsto \color{blue}{100 \cdot n} \]
    5. Applied rewrites71.5%

      \[\leadsto \color{blue}{100 \cdot n} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification93.7%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{\frac{i}{n}}\\ \mathbf{elif}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq \infty:\\ \;\;\;\;\left(\frac{100}{i} \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{\left(0.5 \cdot n\right)}, {\left(\frac{i}{n} + 1\right)}^{\left(0.5 \cdot n\right)}, -1\right)\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \]
  5. Add Preprocessing

Alternative 2: 94.3% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := {\left(\frac{i}{n} + 1\right)}^{n}\\ t_1 := \frac{t\_0 - 1}{\frac{i}{n}}\\ \mathbf{if}\;t\_1 \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{\frac{i}{n}}\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left(t\_0, 100, -100\right)}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \end{array} \]
(FPCore (i n)
 :precision binary64
 (let* ((t_0 (pow (+ (/ i n) 1.0) n)) (t_1 (/ (- t_0 1.0) (/ i n))))
   (if (<= t_1 0.0)
     (/ (* (expm1 (* (log1p (/ i n)) n)) 100.0) (/ i n))
     (if (<= t_1 INFINITY) (* (/ (fma t_0 100.0 -100.0) i) n) (* 100.0 n)))))
double code(double i, double n) {
	double t_0 = pow(((i / n) + 1.0), n);
	double t_1 = (t_0 - 1.0) / (i / n);
	double tmp;
	if (t_1 <= 0.0) {
		tmp = (expm1((log1p((i / n)) * n)) * 100.0) / (i / n);
	} else if (t_1 <= ((double) INFINITY)) {
		tmp = (fma(t_0, 100.0, -100.0) / i) * n;
	} else {
		tmp = 100.0 * n;
	}
	return tmp;
}
function code(i, n)
	t_0 = Float64(Float64(i / n) + 1.0) ^ n
	t_1 = Float64(Float64(t_0 - 1.0) / Float64(i / n))
	tmp = 0.0
	if (t_1 <= 0.0)
		tmp = Float64(Float64(expm1(Float64(log1p(Float64(i / n)) * n)) * 100.0) / Float64(i / n));
	elseif (t_1 <= Inf)
		tmp = Float64(Float64(fma(t_0, 100.0, -100.0) / i) * n);
	else
		tmp = Float64(100.0 * n);
	end
	return tmp
end
code[i_, n_] := Block[{t$95$0 = N[Power[N[(N[(i / n), $MachinePrecision] + 1.0), $MachinePrecision], n], $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 0.0], N[(N[(N[(Exp[N[(N[Log[1 + N[(i / n), $MachinePrecision]], $MachinePrecision] * n), $MachinePrecision]] - 1), $MachinePrecision] * 100.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], N[(N[(N[(t$95$0 * 100.0 + -100.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * n), $MachinePrecision]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := {\left(\frac{i}{n} + 1\right)}^{n}\\
t_1 := \frac{t\_0 - 1}{\frac{i}{n}}\\
\mathbf{if}\;t\_1 \leq 0:\\
\;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{\frac{i}{n}}\\

\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(t\_0, 100, -100\right)}{i} \cdot n\\

\mathbf{else}:\\
\;\;\;\;100 \cdot n\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < -0.0

    1. Initial program 23.4%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      5. lower-*.f6423.4

        \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
      6. lift--.f64N/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
      7. lift-pow.f64N/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right)}{\frac{i}{n}} \]
      8. pow-to-expN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right)}{\frac{i}{n}} \]
      9. lower-expm1.f64N/A

        \[\leadsto \frac{100 \cdot \color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)}}{\frac{i}{n}} \]
      10. lower-*.f64N/A

        \[\leadsto \frac{100 \cdot \mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right)}{\frac{i}{n}} \]
      11. lift-+.f64N/A

        \[\leadsto \frac{100 \cdot \mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right)}{\frac{i}{n}} \]
      12. lower-log1p.f6498.6

        \[\leadsto \frac{100 \cdot \mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right)}{\frac{i}{n}} \]
    4. Applied rewrites98.6%

      \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{\frac{i}{n}}} \]

    if -0.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < +inf.0

    1. Initial program 97.5%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lift-/.f64N/A

        \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
      5. associate-/r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      6. lower-*.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      7. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
      8. associate-/l*N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      9. lower-*.f64N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      10. lift--.f64N/A

        \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      12. pow-to-expN/A

        \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      13. lower-expm1.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
      14. lower-*.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
      15. lift-+.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      16. lower-log1p.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      17. lower-/.f6468.2

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
    4. Applied rewrites68.2%

      \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
    5. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right)} \cdot n \]
      2. lift-/.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
      4. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      5. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      6. lower-/.f6468.1

        \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}} \cdot n \]
      7. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      8. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
      9. lower-*.f6468.1

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
    6. Applied rewrites68.1%

      \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
    7. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
      2. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      3. lift-expm1.f64N/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left(e^{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n} - 1\right)}}{i} \cdot n \]
      4. lift-*.f64N/A

        \[\leadsto \frac{100 \cdot \left(e^{\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n}} - 1\right)}{i} \cdot n \]
      5. lift-log1p.f64N/A

        \[\leadsto \frac{100 \cdot \left(e^{\color{blue}{\log \left(1 + \frac{i}{n}\right)} \cdot n} - 1\right)}{i} \cdot n \]
      6. pow-to-expN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right)}{i} \cdot n \]
      7. +-commutativeN/A

        \[\leadsto \frac{100 \cdot \left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} - 1\right)}{i} \cdot n \]
      8. lift-+.f64N/A

        \[\leadsto \frac{100 \cdot \left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} - 1\right)}{i} \cdot n \]
      9. sqr-powN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)} \cdot {\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)}} - 1\right)}{i} \cdot n \]
      10. sqr-powN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} - 1\right)}{i} \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} - 1\right)}{i} \cdot n \]
      12. sub-negN/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left({\left(\frac{i}{n} + 1\right)}^{n} + \left(\mathsf{neg}\left(1\right)\right)\right)}}{i} \cdot n \]
      13. distribute-rgt-inN/A

        \[\leadsto \frac{\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \left(\mathsf{neg}\left(1\right)\right) \cdot 100}}{i} \cdot n \]
      14. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{-1} \cdot 100}{i} \cdot n \]
      15. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{-100}}{i} \cdot n \]
      16. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{\left(\mathsf{neg}\left(100\right)\right)}}{i} \cdot n \]
      17. lower-fma.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, 100, \mathsf{neg}\left(100\right)\right)}}{i} \cdot n \]
    8. Applied rewrites97.7%

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, 100, -100\right)}}{i} \cdot n \]

    if +inf.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n))

    1. Initial program 0.0%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Taylor expanded in i around 0

      \[\leadsto \color{blue}{100 \cdot n} \]
    4. Step-by-step derivation
      1. lower-*.f6471.5

        \[\leadsto \color{blue}{100 \cdot n} \]
    5. Applied rewrites71.5%

      \[\leadsto \color{blue}{100 \cdot n} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification93.7%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{\frac{i}{n}}\\ \mathbf{elif}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, 100, -100\right)}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \]
  5. Add Preprocessing

Alternative 3: 93.6% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := {\left(\frac{i}{n} + 1\right)}^{n}\\ t_1 := \frac{t\_0 - 1}{\frac{i}{n}}\\ \mathbf{if}\;t\_1 \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i} \cdot n\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left(t\_0, 100, -100\right)}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \end{array} \]
(FPCore (i n)
 :precision binary64
 (let* ((t_0 (pow (+ (/ i n) 1.0) n)) (t_1 (/ (- t_0 1.0) (/ i n))))
   (if (<= t_1 0.0)
     (* (/ (* (expm1 (* (log1p (/ i n)) n)) 100.0) i) n)
     (if (<= t_1 INFINITY) (* (/ (fma t_0 100.0 -100.0) i) n) (* 100.0 n)))))
double code(double i, double n) {
	double t_0 = pow(((i / n) + 1.0), n);
	double t_1 = (t_0 - 1.0) / (i / n);
	double tmp;
	if (t_1 <= 0.0) {
		tmp = ((expm1((log1p((i / n)) * n)) * 100.0) / i) * n;
	} else if (t_1 <= ((double) INFINITY)) {
		tmp = (fma(t_0, 100.0, -100.0) / i) * n;
	} else {
		tmp = 100.0 * n;
	}
	return tmp;
}
function code(i, n)
	t_0 = Float64(Float64(i / n) + 1.0) ^ n
	t_1 = Float64(Float64(t_0 - 1.0) / Float64(i / n))
	tmp = 0.0
	if (t_1 <= 0.0)
		tmp = Float64(Float64(Float64(expm1(Float64(log1p(Float64(i / n)) * n)) * 100.0) / i) * n);
	elseif (t_1 <= Inf)
		tmp = Float64(Float64(fma(t_0, 100.0, -100.0) / i) * n);
	else
		tmp = Float64(100.0 * n);
	end
	return tmp
end
code[i_, n_] := Block[{t$95$0 = N[Power[N[(N[(i / n), $MachinePrecision] + 1.0), $MachinePrecision], n], $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 0.0], N[(N[(N[(N[(Exp[N[(N[Log[1 + N[(i / n), $MachinePrecision]], $MachinePrecision] * n), $MachinePrecision]] - 1), $MachinePrecision] * 100.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision], If[LessEqual[t$95$1, Infinity], N[(N[(N[(t$95$0 * 100.0 + -100.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * n), $MachinePrecision]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := {\left(\frac{i}{n} + 1\right)}^{n}\\
t_1 := \frac{t\_0 - 1}{\frac{i}{n}}\\
\mathbf{if}\;t\_1 \leq 0:\\
\;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i} \cdot n\\

\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(t\_0, 100, -100\right)}{i} \cdot n\\

\mathbf{else}:\\
\;\;\;\;100 \cdot n\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < -0.0

    1. Initial program 23.4%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lift-/.f64N/A

        \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
      5. associate-/r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      6. lower-*.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      7. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
      8. associate-/l*N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      9. lower-*.f64N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      10. lift--.f64N/A

        \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      12. pow-to-expN/A

        \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      13. lower-expm1.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
      14. lower-*.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
      15. lift-+.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      16. lower-log1p.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      17. lower-/.f6497.5

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
    4. Applied rewrites97.5%

      \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
    5. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right)} \cdot n \]
      2. lift-/.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
      4. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      5. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      6. lower-/.f6498.0

        \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}} \cdot n \]
      7. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      8. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
      9. lower-*.f6498.0

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
    6. Applied rewrites98.0%

      \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]

    if -0.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < +inf.0

    1. Initial program 97.5%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lift-/.f64N/A

        \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
      5. associate-/r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      6. lower-*.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      7. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
      8. associate-/l*N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      9. lower-*.f64N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      10. lift--.f64N/A

        \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      12. pow-to-expN/A

        \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      13. lower-expm1.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
      14. lower-*.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
      15. lift-+.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      16. lower-log1p.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      17. lower-/.f6468.2

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
    4. Applied rewrites68.2%

      \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
    5. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right)} \cdot n \]
      2. lift-/.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
      4. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      5. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      6. lower-/.f6468.1

        \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}} \cdot n \]
      7. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      8. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
      9. lower-*.f6468.1

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
    6. Applied rewrites68.1%

      \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
    7. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
      2. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      3. lift-expm1.f64N/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left(e^{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n} - 1\right)}}{i} \cdot n \]
      4. lift-*.f64N/A

        \[\leadsto \frac{100 \cdot \left(e^{\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n}} - 1\right)}{i} \cdot n \]
      5. lift-log1p.f64N/A

        \[\leadsto \frac{100 \cdot \left(e^{\color{blue}{\log \left(1 + \frac{i}{n}\right)} \cdot n} - 1\right)}{i} \cdot n \]
      6. pow-to-expN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right)}{i} \cdot n \]
      7. +-commutativeN/A

        \[\leadsto \frac{100 \cdot \left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} - 1\right)}{i} \cdot n \]
      8. lift-+.f64N/A

        \[\leadsto \frac{100 \cdot \left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} - 1\right)}{i} \cdot n \]
      9. sqr-powN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)} \cdot {\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)}} - 1\right)}{i} \cdot n \]
      10. sqr-powN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} - 1\right)}{i} \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} - 1\right)}{i} \cdot n \]
      12. sub-negN/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left({\left(\frac{i}{n} + 1\right)}^{n} + \left(\mathsf{neg}\left(1\right)\right)\right)}}{i} \cdot n \]
      13. distribute-rgt-inN/A

        \[\leadsto \frac{\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \left(\mathsf{neg}\left(1\right)\right) \cdot 100}}{i} \cdot n \]
      14. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{-1} \cdot 100}{i} \cdot n \]
      15. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{-100}}{i} \cdot n \]
      16. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{\left(\mathsf{neg}\left(100\right)\right)}}{i} \cdot n \]
      17. lower-fma.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, 100, \mathsf{neg}\left(100\right)\right)}}{i} \cdot n \]
    8. Applied rewrites97.7%

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, 100, -100\right)}}{i} \cdot n \]

    if +inf.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n))

    1. Initial program 0.0%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Taylor expanded in i around 0

      \[\leadsto \color{blue}{100 \cdot n} \]
    4. Step-by-step derivation
      1. lower-*.f6471.5

        \[\leadsto \color{blue}{100 \cdot n} \]
    5. Applied rewrites71.5%

      \[\leadsto \color{blue}{100 \cdot n} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification93.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i} \cdot n\\ \mathbf{elif}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, 100, -100\right)}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \]
  5. Add Preprocessing

Alternative 4: 93.5% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := {\left(\frac{i}{n} + 1\right)}^{n}\\ t_1 := \frac{t\_0 - 1}{\frac{i}{n}}\\ \mathbf{if}\;t\_1 \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i} \cdot \left(100 \cdot n\right)\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left(t\_0, 100, -100\right)}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \end{array} \]
(FPCore (i n)
 :precision binary64
 (let* ((t_0 (pow (+ (/ i n) 1.0) n)) (t_1 (/ (- t_0 1.0) (/ i n))))
   (if (<= t_1 0.0)
     (* (/ (expm1 (* (log1p (/ i n)) n)) i) (* 100.0 n))
     (if (<= t_1 INFINITY) (* (/ (fma t_0 100.0 -100.0) i) n) (* 100.0 n)))))
double code(double i, double n) {
	double t_0 = pow(((i / n) + 1.0), n);
	double t_1 = (t_0 - 1.0) / (i / n);
	double tmp;
	if (t_1 <= 0.0) {
		tmp = (expm1((log1p((i / n)) * n)) / i) * (100.0 * n);
	} else if (t_1 <= ((double) INFINITY)) {
		tmp = (fma(t_0, 100.0, -100.0) / i) * n;
	} else {
		tmp = 100.0 * n;
	}
	return tmp;
}
function code(i, n)
	t_0 = Float64(Float64(i / n) + 1.0) ^ n
	t_1 = Float64(Float64(t_0 - 1.0) / Float64(i / n))
	tmp = 0.0
	if (t_1 <= 0.0)
		tmp = Float64(Float64(expm1(Float64(log1p(Float64(i / n)) * n)) / i) * Float64(100.0 * n));
	elseif (t_1 <= Inf)
		tmp = Float64(Float64(fma(t_0, 100.0, -100.0) / i) * n);
	else
		tmp = Float64(100.0 * n);
	end
	return tmp
end
code[i_, n_] := Block[{t$95$0 = N[Power[N[(N[(i / n), $MachinePrecision] + 1.0), $MachinePrecision], n], $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 0.0], N[(N[(N[(Exp[N[(N[Log[1 + N[(i / n), $MachinePrecision]], $MachinePrecision] * n), $MachinePrecision]] - 1), $MachinePrecision] / i), $MachinePrecision] * N[(100.0 * n), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], N[(N[(N[(t$95$0 * 100.0 + -100.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * n), $MachinePrecision]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := {\left(\frac{i}{n} + 1\right)}^{n}\\
t_1 := \frac{t\_0 - 1}{\frac{i}{n}}\\
\mathbf{if}\;t\_1 \leq 0:\\
\;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i} \cdot \left(100 \cdot n\right)\\

\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(t\_0, 100, -100\right)}{i} \cdot n\\

\mathbf{else}:\\
\;\;\;\;100 \cdot n\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < -0.0

    1. Initial program 23.4%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. *-commutativeN/A

        \[\leadsto \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \cdot 100} \]
      3. lift-/.f64N/A

        \[\leadsto \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \cdot 100 \]
      4. lift-/.f64N/A

        \[\leadsto \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\color{blue}{\frac{i}{n}}} \cdot 100 \]
      5. associate-/r/N/A

        \[\leadsto \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i} \cdot n\right)} \cdot 100 \]
      6. associate-*l*N/A

        \[\leadsto \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i} \cdot \left(n \cdot 100\right)} \]
      7. lower-*.f64N/A

        \[\leadsto \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i} \cdot \left(n \cdot 100\right)} \]
      8. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{i}} \cdot \left(n \cdot 100\right) \]
      9. lift--.f64N/A

        \[\leadsto \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{i} \cdot \left(n \cdot 100\right) \]
      10. lift-pow.f64N/A

        \[\leadsto \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1}{i} \cdot \left(n \cdot 100\right) \]
      11. pow-to-expN/A

        \[\leadsto \frac{\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1}{i} \cdot \left(n \cdot 100\right) \]
      12. lower-expm1.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)}}{i} \cdot \left(n \cdot 100\right) \]
      13. lower-*.f64N/A

        \[\leadsto \frac{\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right)}{i} \cdot \left(n \cdot 100\right) \]
      14. lift-+.f64N/A

        \[\leadsto \frac{\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right)}{i} \cdot \left(n \cdot 100\right) \]
      15. lower-log1p.f64N/A

        \[\leadsto \frac{\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right)}{i} \cdot \left(n \cdot 100\right) \]
      16. *-commutativeN/A

        \[\leadsto \frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i} \cdot \color{blue}{\left(100 \cdot n\right)} \]
      17. lower-*.f6497.9

        \[\leadsto \frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i} \cdot \color{blue}{\left(100 \cdot n\right)} \]
    4. Applied rewrites97.9%

      \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i} \cdot \left(100 \cdot n\right)} \]

    if -0.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < +inf.0

    1. Initial program 97.5%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lift-/.f64N/A

        \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
      5. associate-/r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      6. lower-*.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      7. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
      8. associate-/l*N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      9. lower-*.f64N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      10. lift--.f64N/A

        \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      12. pow-to-expN/A

        \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      13. lower-expm1.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
      14. lower-*.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
      15. lift-+.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      16. lower-log1p.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      17. lower-/.f6468.2

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
    4. Applied rewrites68.2%

      \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
    5. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right)} \cdot n \]
      2. lift-/.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
      4. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      5. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      6. lower-/.f6468.1

        \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}} \cdot n \]
      7. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      8. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
      9. lower-*.f6468.1

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
    6. Applied rewrites68.1%

      \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
    7. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
      2. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      3. lift-expm1.f64N/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left(e^{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n} - 1\right)}}{i} \cdot n \]
      4. lift-*.f64N/A

        \[\leadsto \frac{100 \cdot \left(e^{\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n}} - 1\right)}{i} \cdot n \]
      5. lift-log1p.f64N/A

        \[\leadsto \frac{100 \cdot \left(e^{\color{blue}{\log \left(1 + \frac{i}{n}\right)} \cdot n} - 1\right)}{i} \cdot n \]
      6. pow-to-expN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right)}{i} \cdot n \]
      7. +-commutativeN/A

        \[\leadsto \frac{100 \cdot \left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} - 1\right)}{i} \cdot n \]
      8. lift-+.f64N/A

        \[\leadsto \frac{100 \cdot \left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} - 1\right)}{i} \cdot n \]
      9. sqr-powN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)} \cdot {\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)}} - 1\right)}{i} \cdot n \]
      10. sqr-powN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} - 1\right)}{i} \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} - 1\right)}{i} \cdot n \]
      12. sub-negN/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left({\left(\frac{i}{n} + 1\right)}^{n} + \left(\mathsf{neg}\left(1\right)\right)\right)}}{i} \cdot n \]
      13. distribute-rgt-inN/A

        \[\leadsto \frac{\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \left(\mathsf{neg}\left(1\right)\right) \cdot 100}}{i} \cdot n \]
      14. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{-1} \cdot 100}{i} \cdot n \]
      15. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{-100}}{i} \cdot n \]
      16. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{\left(\mathsf{neg}\left(100\right)\right)}}{i} \cdot n \]
      17. lower-fma.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, 100, \mathsf{neg}\left(100\right)\right)}}{i} \cdot n \]
    8. Applied rewrites97.7%

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, 100, -100\right)}}{i} \cdot n \]

    if +inf.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n))

    1. Initial program 0.0%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Taylor expanded in i around 0

      \[\leadsto \color{blue}{100 \cdot n} \]
    4. Step-by-step derivation
      1. lower-*.f6471.5

        \[\leadsto \color{blue}{100 \cdot n} \]
    5. Applied rewrites71.5%

      \[\leadsto \color{blue}{100 \cdot n} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification93.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i} \cdot \left(100 \cdot n\right)\\ \mathbf{elif}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, 100, -100\right)}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \]
  5. Add Preprocessing

Alternative 5: 93.3% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := {\left(\frac{i}{n} + 1\right)}^{n}\\ t_1 := \frac{t\_0 - 1}{\frac{i}{n}}\\ \mathbf{if}\;t\_1 \leq 0:\\ \;\;\;\;\left(\frac{100}{i} \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)\right) \cdot n\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left(t\_0, 100, -100\right)}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \end{array} \]
(FPCore (i n)
 :precision binary64
 (let* ((t_0 (pow (+ (/ i n) 1.0) n)) (t_1 (/ (- t_0 1.0) (/ i n))))
   (if (<= t_1 0.0)
     (* (* (/ 100.0 i) (expm1 (* (log1p (/ i n)) n))) n)
     (if (<= t_1 INFINITY) (* (/ (fma t_0 100.0 -100.0) i) n) (* 100.0 n)))))
double code(double i, double n) {
	double t_0 = pow(((i / n) + 1.0), n);
	double t_1 = (t_0 - 1.0) / (i / n);
	double tmp;
	if (t_1 <= 0.0) {
		tmp = ((100.0 / i) * expm1((log1p((i / n)) * n))) * n;
	} else if (t_1 <= ((double) INFINITY)) {
		tmp = (fma(t_0, 100.0, -100.0) / i) * n;
	} else {
		tmp = 100.0 * n;
	}
	return tmp;
}
function code(i, n)
	t_0 = Float64(Float64(i / n) + 1.0) ^ n
	t_1 = Float64(Float64(t_0 - 1.0) / Float64(i / n))
	tmp = 0.0
	if (t_1 <= 0.0)
		tmp = Float64(Float64(Float64(100.0 / i) * expm1(Float64(log1p(Float64(i / n)) * n))) * n);
	elseif (t_1 <= Inf)
		tmp = Float64(Float64(fma(t_0, 100.0, -100.0) / i) * n);
	else
		tmp = Float64(100.0 * n);
	end
	return tmp
end
code[i_, n_] := Block[{t$95$0 = N[Power[N[(N[(i / n), $MachinePrecision] + 1.0), $MachinePrecision], n], $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 0.0], N[(N[(N[(100.0 / i), $MachinePrecision] * N[(Exp[N[(N[Log[1 + N[(i / n), $MachinePrecision]], $MachinePrecision] * n), $MachinePrecision]] - 1), $MachinePrecision]), $MachinePrecision] * n), $MachinePrecision], If[LessEqual[t$95$1, Infinity], N[(N[(N[(t$95$0 * 100.0 + -100.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * n), $MachinePrecision]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := {\left(\frac{i}{n} + 1\right)}^{n}\\
t_1 := \frac{t\_0 - 1}{\frac{i}{n}}\\
\mathbf{if}\;t\_1 \leq 0:\\
\;\;\;\;\left(\frac{100}{i} \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)\right) \cdot n\\

\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(t\_0, 100, -100\right)}{i} \cdot n\\

\mathbf{else}:\\
\;\;\;\;100 \cdot n\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < -0.0

    1. Initial program 23.4%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lift-/.f64N/A

        \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
      5. associate-/r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      6. lower-*.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      7. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
      8. associate-/l*N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      9. lower-*.f64N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      10. lift--.f64N/A

        \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      12. pow-to-expN/A

        \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      13. lower-expm1.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
      14. lower-*.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
      15. lift-+.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      16. lower-log1p.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      17. lower-/.f6497.5

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
    4. Applied rewrites97.5%

      \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]

    if -0.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n)) < +inf.0

    1. Initial program 97.5%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lift-/.f64N/A

        \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
      5. associate-/r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      6. lower-*.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      7. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
      8. associate-/l*N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      9. lower-*.f64N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      10. lift--.f64N/A

        \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      12. pow-to-expN/A

        \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      13. lower-expm1.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
      14. lower-*.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
      15. lift-+.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      16. lower-log1p.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      17. lower-/.f6468.2

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
    4. Applied rewrites68.2%

      \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
    5. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right)} \cdot n \]
      2. lift-/.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
      4. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      5. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      6. lower-/.f6468.1

        \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}} \cdot n \]
      7. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      8. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
      9. lower-*.f6468.1

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
    6. Applied rewrites68.1%

      \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
    7. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
      2. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
      3. lift-expm1.f64N/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left(e^{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n} - 1\right)}}{i} \cdot n \]
      4. lift-*.f64N/A

        \[\leadsto \frac{100 \cdot \left(e^{\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n}} - 1\right)}{i} \cdot n \]
      5. lift-log1p.f64N/A

        \[\leadsto \frac{100 \cdot \left(e^{\color{blue}{\log \left(1 + \frac{i}{n}\right)} \cdot n} - 1\right)}{i} \cdot n \]
      6. pow-to-expN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right)}{i} \cdot n \]
      7. +-commutativeN/A

        \[\leadsto \frac{100 \cdot \left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} - 1\right)}{i} \cdot n \]
      8. lift-+.f64N/A

        \[\leadsto \frac{100 \cdot \left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n} - 1\right)}{i} \cdot n \]
      9. sqr-powN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)} \cdot {\left(\frac{i}{n} + 1\right)}^{\left(\frac{n}{2}\right)}} - 1\right)}{i} \cdot n \]
      10. sqr-powN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} - 1\right)}{i} \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} - 1\right)}{i} \cdot n \]
      12. sub-negN/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left({\left(\frac{i}{n} + 1\right)}^{n} + \left(\mathsf{neg}\left(1\right)\right)\right)}}{i} \cdot n \]
      13. distribute-rgt-inN/A

        \[\leadsto \frac{\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \left(\mathsf{neg}\left(1\right)\right) \cdot 100}}{i} \cdot n \]
      14. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{-1} \cdot 100}{i} \cdot n \]
      15. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{-100}}{i} \cdot n \]
      16. metadata-evalN/A

        \[\leadsto \frac{{\left(\frac{i}{n} + 1\right)}^{n} \cdot 100 + \color{blue}{\left(\mathsf{neg}\left(100\right)\right)}}{i} \cdot n \]
      17. lower-fma.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, 100, \mathsf{neg}\left(100\right)\right)}}{i} \cdot n \]
    8. Applied rewrites97.7%

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, 100, -100\right)}}{i} \cdot n \]

    if +inf.0 < (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n))

    1. Initial program 0.0%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Taylor expanded in i around 0

      \[\leadsto \color{blue}{100 \cdot n} \]
    4. Step-by-step derivation
      1. lower-*.f6471.5

        \[\leadsto \color{blue}{100 \cdot n} \]
    5. Applied rewrites71.5%

      \[\leadsto \color{blue}{100 \cdot n} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification92.8%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq 0:\\ \;\;\;\;\left(\frac{100}{i} \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)\right) \cdot n\\ \mathbf{elif}\;\frac{{\left(\frac{i}{n} + 1\right)}^{n} - 1}{\frac{i}{n}} \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, 100, -100\right)}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \]
  5. Add Preprocessing

Alternative 6: 79.9% accurate, 1.1× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -3.5 \cdot 10^{-188}:\\ \;\;\;\;\left(\mathsf{expm1}\left(i\right) \cdot \frac{100}{i}\right) \cdot n\\ \mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n\\ \end{array} \end{array} \]
(FPCore (i n)
 :precision binary64
 (if (<= n -3.5e-188)
   (* (* (expm1 i) (/ 100.0 i)) n)
   (if (<= n 3.5e-105) 0.0 (* (* (/ (expm1 i) i) 100.0) n))))
double code(double i, double n) {
	double tmp;
	if (n <= -3.5e-188) {
		tmp = (expm1(i) * (100.0 / i)) * n;
	} else if (n <= 3.5e-105) {
		tmp = 0.0;
	} else {
		tmp = ((expm1(i) / i) * 100.0) * n;
	}
	return tmp;
}
public static double code(double i, double n) {
	double tmp;
	if (n <= -3.5e-188) {
		tmp = (Math.expm1(i) * (100.0 / i)) * n;
	} else if (n <= 3.5e-105) {
		tmp = 0.0;
	} else {
		tmp = ((Math.expm1(i) / i) * 100.0) * n;
	}
	return tmp;
}
def code(i, n):
	tmp = 0
	if n <= -3.5e-188:
		tmp = (math.expm1(i) * (100.0 / i)) * n
	elif n <= 3.5e-105:
		tmp = 0.0
	else:
		tmp = ((math.expm1(i) / i) * 100.0) * n
	return tmp
function code(i, n)
	tmp = 0.0
	if (n <= -3.5e-188)
		tmp = Float64(Float64(expm1(i) * Float64(100.0 / i)) * n);
	elseif (n <= 3.5e-105)
		tmp = 0.0;
	else
		tmp = Float64(Float64(Float64(expm1(i) / i) * 100.0) * n);
	end
	return tmp
end
code[i_, n_] := If[LessEqual[n, -3.5e-188], N[(N[(N[(Exp[i] - 1), $MachinePrecision] * N[(100.0 / i), $MachinePrecision]), $MachinePrecision] * n), $MachinePrecision], If[LessEqual[n, 3.5e-105], 0.0, N[(N[(N[(N[(Exp[i] - 1), $MachinePrecision] / i), $MachinePrecision] * 100.0), $MachinePrecision] * n), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;n \leq -3.5 \cdot 10^{-188}:\\
\;\;\;\;\left(\mathsf{expm1}\left(i\right) \cdot \frac{100}{i}\right) \cdot n\\

\mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\
\;\;\;\;0\\

\mathbf{else}:\\
\;\;\;\;\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if n < -3.5e-188

    1. Initial program 21.1%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      3. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
      4. lift-/.f64N/A

        \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
      5. associate-/r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      6. lower-*.f64N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      7. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
      8. associate-/l*N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      9. lower-*.f64N/A

        \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
      10. lift--.f64N/A

        \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
      11. lift-pow.f64N/A

        \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      12. pow-to-expN/A

        \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
      13. lower-expm1.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
      14. lower-*.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
      15. lift-+.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      16. lower-log1p.f64N/A

        \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
      17. lower-/.f6478.9

        \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
    4. Applied rewrites78.9%

      \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
    5. Taylor expanded in n around inf

      \[\leadsto \left(\color{blue}{\left(e^{i} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
    6. Step-by-step derivation
      1. lower-expm1.f6487.8

        \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(i\right)} \cdot \frac{100}{i}\right) \cdot n \]
    7. Applied rewrites87.8%

      \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(i\right)} \cdot \frac{100}{i}\right) \cdot n \]

    if -3.5e-188 < n < 3.5e-105

    1. Initial program 43.2%

      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
      2. lift--.f64N/A

        \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
      3. div-subN/A

        \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)} \]
      4. lift-/.f64N/A

        \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\color{blue}{\frac{i}{n}}}\right) \]
      5. clear-numN/A

        \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
      6. sub-negN/A

        \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right)} \]
      7. div-invN/A

        \[\leadsto 100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
      8. lift-/.f64N/A

        \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\color{blue}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
      9. clear-numN/A

        \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \color{blue}{\frac{n}{i}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
      10. lower-fma.f64N/A

        \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right)} \]
      11. lift-+.f64N/A

        \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(1 + \frac{i}{n}\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
      12. +-commutativeN/A

        \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
      13. lower-+.f64N/A

        \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
      14. lower-/.f64N/A

        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \color{blue}{\frac{n}{i}}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
      15. distribute-neg-fracN/A

        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
      16. lower-/.f64N/A

        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
      17. lower-neg.f6443.2

        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{\color{blue}{-n}}{i}\right) \]
    4. Applied rewrites43.2%

      \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{-n}{i}\right)} \]
    5. Taylor expanded in i around 0

      \[\leadsto \color{blue}{100 \cdot \frac{n + -1 \cdot n}{i}} \]
    6. Step-by-step derivation
      1. associate-*r/N/A

        \[\leadsto \color{blue}{\frac{100 \cdot \left(n + -1 \cdot n\right)}{i}} \]
      2. distribute-rgt1-inN/A

        \[\leadsto \frac{100 \cdot \color{blue}{\left(\left(-1 + 1\right) \cdot n\right)}}{i} \]
      3. metadata-evalN/A

        \[\leadsto \frac{100 \cdot \left(\color{blue}{0} \cdot n\right)}{i} \]
      4. mul0-lftN/A

        \[\leadsto \frac{100 \cdot \color{blue}{0}}{i} \]
      5. metadata-evalN/A

        \[\leadsto \frac{\color{blue}{0}}{i} \]
      6. lower-/.f6471.7

        \[\leadsto \color{blue}{\frac{0}{i}} \]
    7. Applied rewrites71.7%

      \[\leadsto \color{blue}{\frac{0}{i}} \]
    8. Taylor expanded in i around 0

      \[\leadsto 0 \]
    9. Step-by-step derivation
      1. Applied rewrites71.7%

        \[\leadsto 0 \]

      if 3.5e-105 < n

      1. Initial program 19.3%

        \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
      2. Add Preprocessing
      3. Taylor expanded in n around inf

        \[\leadsto \color{blue}{100 \cdot \frac{n \cdot \left(e^{i} - 1\right)}{i}} \]
      4. Step-by-step derivation
        1. associate-/l*N/A

          \[\leadsto 100 \cdot \color{blue}{\left(n \cdot \frac{e^{i} - 1}{i}\right)} \]
        2. *-commutativeN/A

          \[\leadsto 100 \cdot \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot n\right)} \]
        3. associate-*l*N/A

          \[\leadsto \color{blue}{\left(100 \cdot \frac{e^{i} - 1}{i}\right) \cdot n} \]
        4. lower-*.f64N/A

          \[\leadsto \color{blue}{\left(100 \cdot \frac{e^{i} - 1}{i}\right) \cdot n} \]
        5. *-commutativeN/A

          \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
        6. lower-*.f64N/A

          \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
        7. lower-/.f64N/A

          \[\leadsto \left(\color{blue}{\frac{e^{i} - 1}{i}} \cdot 100\right) \cdot n \]
        8. lower-expm1.f6490.2

          \[\leadsto \left(\frac{\color{blue}{\mathsf{expm1}\left(i\right)}}{i} \cdot 100\right) \cdot n \]
      5. Applied rewrites90.2%

        \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n} \]
    10. Recombined 3 regimes into one program.
    11. Add Preprocessing

    Alternative 7: 80.1% accurate, 1.1× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n\\ \mathbf{if}\;n \leq -3.5 \cdot 10^{-188}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
    (FPCore (i n)
     :precision binary64
     (let* ((t_0 (* (* (/ (expm1 i) i) 100.0) n)))
       (if (<= n -3.5e-188) t_0 (if (<= n 3.5e-105) 0.0 t_0))))
    double code(double i, double n) {
    	double t_0 = ((expm1(i) / i) * 100.0) * n;
    	double tmp;
    	if (n <= -3.5e-188) {
    		tmp = t_0;
    	} else if (n <= 3.5e-105) {
    		tmp = 0.0;
    	} else {
    		tmp = t_0;
    	}
    	return tmp;
    }
    
    public static double code(double i, double n) {
    	double t_0 = ((Math.expm1(i) / i) * 100.0) * n;
    	double tmp;
    	if (n <= -3.5e-188) {
    		tmp = t_0;
    	} else if (n <= 3.5e-105) {
    		tmp = 0.0;
    	} else {
    		tmp = t_0;
    	}
    	return tmp;
    }
    
    def code(i, n):
    	t_0 = ((math.expm1(i) / i) * 100.0) * n
    	tmp = 0
    	if n <= -3.5e-188:
    		tmp = t_0
    	elif n <= 3.5e-105:
    		tmp = 0.0
    	else:
    		tmp = t_0
    	return tmp
    
    function code(i, n)
    	t_0 = Float64(Float64(Float64(expm1(i) / i) * 100.0) * n)
    	tmp = 0.0
    	if (n <= -3.5e-188)
    		tmp = t_0;
    	elseif (n <= 3.5e-105)
    		tmp = 0.0;
    	else
    		tmp = t_0;
    	end
    	return tmp
    end
    
    code[i_, n_] := Block[{t$95$0 = N[(N[(N[(N[(Exp[i] - 1), $MachinePrecision] / i), $MachinePrecision] * 100.0), $MachinePrecision] * n), $MachinePrecision]}, If[LessEqual[n, -3.5e-188], t$95$0, If[LessEqual[n, 3.5e-105], 0.0, t$95$0]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := \left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n\\
    \mathbf{if}\;n \leq -3.5 \cdot 10^{-188}:\\
    \;\;\;\;t\_0\\
    
    \mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\
    \;\;\;\;0\\
    
    \mathbf{else}:\\
    \;\;\;\;t\_0\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if n < -3.5e-188 or 3.5e-105 < n

      1. Initial program 20.3%

        \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
      2. Add Preprocessing
      3. Taylor expanded in n around inf

        \[\leadsto \color{blue}{100 \cdot \frac{n \cdot \left(e^{i} - 1\right)}{i}} \]
      4. Step-by-step derivation
        1. associate-/l*N/A

          \[\leadsto 100 \cdot \color{blue}{\left(n \cdot \frac{e^{i} - 1}{i}\right)} \]
        2. *-commutativeN/A

          \[\leadsto 100 \cdot \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot n\right)} \]
        3. associate-*l*N/A

          \[\leadsto \color{blue}{\left(100 \cdot \frac{e^{i} - 1}{i}\right) \cdot n} \]
        4. lower-*.f64N/A

          \[\leadsto \color{blue}{\left(100 \cdot \frac{e^{i} - 1}{i}\right) \cdot n} \]
        5. *-commutativeN/A

          \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
        6. lower-*.f64N/A

          \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
        7. lower-/.f64N/A

          \[\leadsto \left(\color{blue}{\frac{e^{i} - 1}{i}} \cdot 100\right) \cdot n \]
        8. lower-expm1.f6488.9

          \[\leadsto \left(\frac{\color{blue}{\mathsf{expm1}\left(i\right)}}{i} \cdot 100\right) \cdot n \]
      5. Applied rewrites88.9%

        \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n} \]

      if -3.5e-188 < n < 3.5e-105

      1. Initial program 43.2%

        \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. lift-/.f64N/A

          \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
        2. lift--.f64N/A

          \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
        3. div-subN/A

          \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)} \]
        4. lift-/.f64N/A

          \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\color{blue}{\frac{i}{n}}}\right) \]
        5. clear-numN/A

          \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
        6. sub-negN/A

          \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right)} \]
        7. div-invN/A

          \[\leadsto 100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
        8. lift-/.f64N/A

          \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\color{blue}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
        9. clear-numN/A

          \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \color{blue}{\frac{n}{i}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
        10. lower-fma.f64N/A

          \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right)} \]
        11. lift-+.f64N/A

          \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(1 + \frac{i}{n}\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
        12. +-commutativeN/A

          \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
        13. lower-+.f64N/A

          \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
        14. lower-/.f64N/A

          \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \color{blue}{\frac{n}{i}}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
        15. distribute-neg-fracN/A

          \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
        16. lower-/.f64N/A

          \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
        17. lower-neg.f6443.2

          \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{\color{blue}{-n}}{i}\right) \]
      4. Applied rewrites43.2%

        \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{-n}{i}\right)} \]
      5. Taylor expanded in i around 0

        \[\leadsto \color{blue}{100 \cdot \frac{n + -1 \cdot n}{i}} \]
      6. Step-by-step derivation
        1. associate-*r/N/A

          \[\leadsto \color{blue}{\frac{100 \cdot \left(n + -1 \cdot n\right)}{i}} \]
        2. distribute-rgt1-inN/A

          \[\leadsto \frac{100 \cdot \color{blue}{\left(\left(-1 + 1\right) \cdot n\right)}}{i} \]
        3. metadata-evalN/A

          \[\leadsto \frac{100 \cdot \left(\color{blue}{0} \cdot n\right)}{i} \]
        4. mul0-lftN/A

          \[\leadsto \frac{100 \cdot \color{blue}{0}}{i} \]
        5. metadata-evalN/A

          \[\leadsto \frac{\color{blue}{0}}{i} \]
        6. lower-/.f6471.7

          \[\leadsto \color{blue}{\frac{0}{i}} \]
      7. Applied rewrites71.7%

        \[\leadsto \color{blue}{\frac{0}{i}} \]
      8. Taylor expanded in i around 0

        \[\leadsto 0 \]
      9. Step-by-step derivation
        1. Applied rewrites71.7%

          \[\leadsto 0 \]
      10. Recombined 2 regimes into one program.
      11. Add Preprocessing

      Alternative 8: 65.4% accurate, 4.1× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \mathbf{if}\;n \leq -8.5 \cdot 10^{-131}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
      (FPCore (i n)
       :precision binary64
       (let* ((t_0
               (*
                (fma
                 (fma (fma 4.166666666666667 i 16.666666666666668) i 50.0)
                 i
                 100.0)
                n)))
         (if (<= n -8.5e-131) t_0 (if (<= n 3.5e-105) 0.0 t_0))))
      double code(double i, double n) {
      	double t_0 = fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n;
      	double tmp;
      	if (n <= -8.5e-131) {
      		tmp = t_0;
      	} else if (n <= 3.5e-105) {
      		tmp = 0.0;
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      function code(i, n)
      	t_0 = Float64(fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n)
      	tmp = 0.0
      	if (n <= -8.5e-131)
      		tmp = t_0;
      	elseif (n <= 3.5e-105)
      		tmp = 0.0;
      	else
      		tmp = t_0;
      	end
      	return tmp
      end
      
      code[i_, n_] := Block[{t$95$0 = N[(N[(N[(N[(4.166666666666667 * i + 16.666666666666668), $MachinePrecision] * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision]}, If[LessEqual[n, -8.5e-131], t$95$0, If[LessEqual[n, 3.5e-105], 0.0, t$95$0]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\
      \mathbf{if}\;n \leq -8.5 \cdot 10^{-131}:\\
      \;\;\;\;t\_0\\
      
      \mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\
      \;\;\;\;0\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if n < -8.50000000000000013e-131 or 3.5e-105 < n

        1. Initial program 19.4%

          \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
        2. Add Preprocessing
        3. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
          2. lift-/.f64N/A

            \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
          3. associate-*r/N/A

            \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
          4. lift-/.f64N/A

            \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
          5. associate-/r/N/A

            \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
          6. lower-*.f64N/A

            \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
          7. *-commutativeN/A

            \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
          8. associate-/l*N/A

            \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
          9. lower-*.f64N/A

            \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
          10. lift--.f64N/A

            \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
          11. lift-pow.f64N/A

            \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
          12. pow-to-expN/A

            \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
          13. lower-expm1.f64N/A

            \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
          14. lower-*.f64N/A

            \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
          15. lift-+.f64N/A

            \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
          16. lower-log1p.f64N/A

            \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
          17. lower-/.f6479.4

            \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
        4. Applied rewrites79.4%

          \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
        5. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right)} \cdot n \]
          2. lift-/.f64N/A

            \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
          3. associate-*r/N/A

            \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
          4. *-commutativeN/A

            \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
          5. lift-*.f64N/A

            \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
          6. lower-/.f6479.3

            \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}} \cdot n \]
          7. lift-*.f64N/A

            \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
          8. *-commutativeN/A

            \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
          9. lower-*.f6479.3

            \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
        6. Applied rewrites79.3%

          \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
        7. Taylor expanded in n around inf

          \[\leadsto \color{blue}{\left(100 \cdot \frac{e^{i} - 1}{i}\right)} \cdot n \]
        8. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
          2. lower-*.f64N/A

            \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
          3. lower-/.f64N/A

            \[\leadsto \left(\color{blue}{\frac{e^{i} - 1}{i}} \cdot 100\right) \cdot n \]
          4. lower-expm1.f6489.4

            \[\leadsto \left(\frac{\color{blue}{\mathsf{expm1}\left(i\right)}}{i} \cdot 100\right) \cdot n \]
        9. Applied rewrites89.4%

          \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right)} \cdot n \]
        10. Taylor expanded in i around 0

          \[\leadsto \left(100 + \color{blue}{i \cdot \left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right)\right)}\right) \cdot n \]
        11. Step-by-step derivation
          1. Applied rewrites69.0%

            \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), \color{blue}{i}, 100\right) \cdot n \]

          if -8.50000000000000013e-131 < n < 3.5e-105

          1. Initial program 43.5%

            \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
          2. Add Preprocessing
          3. Step-by-step derivation
            1. lift-/.f64N/A

              \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
            2. lift--.f64N/A

              \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
            3. div-subN/A

              \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)} \]
            4. lift-/.f64N/A

              \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\color{blue}{\frac{i}{n}}}\right) \]
            5. clear-numN/A

              \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
            6. sub-negN/A

              \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right)} \]
            7. div-invN/A

              \[\leadsto 100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
            8. lift-/.f64N/A

              \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\color{blue}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
            9. clear-numN/A

              \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \color{blue}{\frac{n}{i}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
            10. lower-fma.f64N/A

              \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right)} \]
            11. lift-+.f64N/A

              \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(1 + \frac{i}{n}\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
            12. +-commutativeN/A

              \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
            13. lower-+.f64N/A

              \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
            14. lower-/.f64N/A

              \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \color{blue}{\frac{n}{i}}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
            15. distribute-neg-fracN/A

              \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
            16. lower-/.f64N/A

              \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
            17. lower-neg.f6443.6

              \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{\color{blue}{-n}}{i}\right) \]
          4. Applied rewrites43.6%

            \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{-n}{i}\right)} \]
          5. Taylor expanded in i around 0

            \[\leadsto \color{blue}{100 \cdot \frac{n + -1 \cdot n}{i}} \]
          6. Step-by-step derivation
            1. associate-*r/N/A

              \[\leadsto \color{blue}{\frac{100 \cdot \left(n + -1 \cdot n\right)}{i}} \]
            2. distribute-rgt1-inN/A

              \[\leadsto \frac{100 \cdot \color{blue}{\left(\left(-1 + 1\right) \cdot n\right)}}{i} \]
            3. metadata-evalN/A

              \[\leadsto \frac{100 \cdot \left(\color{blue}{0} \cdot n\right)}{i} \]
            4. mul0-lftN/A

              \[\leadsto \frac{100 \cdot \color{blue}{0}}{i} \]
            5. metadata-evalN/A

              \[\leadsto \frac{\color{blue}{0}}{i} \]
            6. lower-/.f6468.5

              \[\leadsto \color{blue}{\frac{0}{i}} \]
          7. Applied rewrites68.5%

            \[\leadsto \color{blue}{\frac{0}{i}} \]
          8. Taylor expanded in i around 0

            \[\leadsto 0 \]
          9. Step-by-step derivation
            1. Applied rewrites68.5%

              \[\leadsto 0 \]
          10. Recombined 2 regimes into one program.
          11. Add Preprocessing

          Alternative 9: 63.8% accurate, 4.9× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \mathsf{fma}\left(\mathsf{fma}\left(16.666666666666668, i, 50\right), i, 100\right) \cdot n\\ \mathbf{if}\;n \leq -8.5 \cdot 10^{-131}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
          (FPCore (i n)
           :precision binary64
           (let* ((t_0 (* (fma (fma 16.666666666666668 i 50.0) i 100.0) n)))
             (if (<= n -8.5e-131) t_0 (if (<= n 3.5e-105) 0.0 t_0))))
          double code(double i, double n) {
          	double t_0 = fma(fma(16.666666666666668, i, 50.0), i, 100.0) * n;
          	double tmp;
          	if (n <= -8.5e-131) {
          		tmp = t_0;
          	} else if (n <= 3.5e-105) {
          		tmp = 0.0;
          	} else {
          		tmp = t_0;
          	}
          	return tmp;
          }
          
          function code(i, n)
          	t_0 = Float64(fma(fma(16.666666666666668, i, 50.0), i, 100.0) * n)
          	tmp = 0.0
          	if (n <= -8.5e-131)
          		tmp = t_0;
          	elseif (n <= 3.5e-105)
          		tmp = 0.0;
          	else
          		tmp = t_0;
          	end
          	return tmp
          end
          
          code[i_, n_] := Block[{t$95$0 = N[(N[(N[(16.666666666666668 * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision]}, If[LessEqual[n, -8.5e-131], t$95$0, If[LessEqual[n, 3.5e-105], 0.0, t$95$0]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := \mathsf{fma}\left(\mathsf{fma}\left(16.666666666666668, i, 50\right), i, 100\right) \cdot n\\
          \mathbf{if}\;n \leq -8.5 \cdot 10^{-131}:\\
          \;\;\;\;t\_0\\
          
          \mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\
          \;\;\;\;0\\
          
          \mathbf{else}:\\
          \;\;\;\;t\_0\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if n < -8.50000000000000013e-131 or 3.5e-105 < n

            1. Initial program 19.4%

              \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
            2. Add Preprocessing
            3. Step-by-step derivation
              1. lift-*.f64N/A

                \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
              2. lift-/.f64N/A

                \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
              3. associate-*r/N/A

                \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
              4. lift-/.f64N/A

                \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
              5. associate-/r/N/A

                \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
              6. lower-*.f64N/A

                \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
              7. *-commutativeN/A

                \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
              8. associate-/l*N/A

                \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
              9. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
              10. lift--.f64N/A

                \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
              11. lift-pow.f64N/A

                \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
              12. pow-to-expN/A

                \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
              13. lower-expm1.f64N/A

                \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
              14. lower-*.f64N/A

                \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
              15. lift-+.f64N/A

                \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
              16. lower-log1p.f64N/A

                \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
              17. lower-/.f6479.4

                \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
            4. Applied rewrites79.4%

              \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
            5. Step-by-step derivation
              1. lift-*.f64N/A

                \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right)} \cdot n \]
              2. lift-/.f64N/A

                \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
              3. associate-*r/N/A

                \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
              4. *-commutativeN/A

                \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
              5. lift-*.f64N/A

                \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
              6. lower-/.f6479.3

                \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}} \cdot n \]
              7. lift-*.f64N/A

                \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
              8. *-commutativeN/A

                \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
              9. lower-*.f6479.3

                \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
            6. Applied rewrites79.3%

              \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
            7. Taylor expanded in n around inf

              \[\leadsto \color{blue}{\left(100 \cdot \frac{e^{i} - 1}{i}\right)} \cdot n \]
            8. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
              2. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
              3. lower-/.f64N/A

                \[\leadsto \left(\color{blue}{\frac{e^{i} - 1}{i}} \cdot 100\right) \cdot n \]
              4. lower-expm1.f6489.4

                \[\leadsto \left(\frac{\color{blue}{\mathsf{expm1}\left(i\right)}}{i} \cdot 100\right) \cdot n \]
            9. Applied rewrites89.4%

              \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right)} \cdot n \]
            10. Taylor expanded in i around 0

              \[\leadsto \left(100 + \color{blue}{i \cdot \left(50 + \frac{50}{3} \cdot i\right)}\right) \cdot n \]
            11. Step-by-step derivation
              1. Applied rewrites66.7%

                \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(16.666666666666668, i, 50\right), \color{blue}{i}, 100\right) \cdot n \]

              if -8.50000000000000013e-131 < n < 3.5e-105

              1. Initial program 43.5%

                \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
              2. Add Preprocessing
              3. Step-by-step derivation
                1. lift-/.f64N/A

                  \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
                2. lift--.f64N/A

                  \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
                3. div-subN/A

                  \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)} \]
                4. lift-/.f64N/A

                  \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\color{blue}{\frac{i}{n}}}\right) \]
                5. clear-numN/A

                  \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
                6. sub-negN/A

                  \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right)} \]
                7. div-invN/A

                  \[\leadsto 100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                8. lift-/.f64N/A

                  \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\color{blue}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                9. clear-numN/A

                  \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \color{blue}{\frac{n}{i}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                10. lower-fma.f64N/A

                  \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right)} \]
                11. lift-+.f64N/A

                  \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(1 + \frac{i}{n}\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                12. +-commutativeN/A

                  \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                13. lower-+.f64N/A

                  \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                14. lower-/.f64N/A

                  \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \color{blue}{\frac{n}{i}}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                15. distribute-neg-fracN/A

                  \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
                16. lower-/.f64N/A

                  \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
                17. lower-neg.f6443.6

                  \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{\color{blue}{-n}}{i}\right) \]
              4. Applied rewrites43.6%

                \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{-n}{i}\right)} \]
              5. Taylor expanded in i around 0

                \[\leadsto \color{blue}{100 \cdot \frac{n + -1 \cdot n}{i}} \]
              6. Step-by-step derivation
                1. associate-*r/N/A

                  \[\leadsto \color{blue}{\frac{100 \cdot \left(n + -1 \cdot n\right)}{i}} \]
                2. distribute-rgt1-inN/A

                  \[\leadsto \frac{100 \cdot \color{blue}{\left(\left(-1 + 1\right) \cdot n\right)}}{i} \]
                3. metadata-evalN/A

                  \[\leadsto \frac{100 \cdot \left(\color{blue}{0} \cdot n\right)}{i} \]
                4. mul0-lftN/A

                  \[\leadsto \frac{100 \cdot \color{blue}{0}}{i} \]
                5. metadata-evalN/A

                  \[\leadsto \frac{\color{blue}{0}}{i} \]
                6. lower-/.f6468.5

                  \[\leadsto \color{blue}{\frac{0}{i}} \]
              7. Applied rewrites68.5%

                \[\leadsto \color{blue}{\frac{0}{i}} \]
              8. Taylor expanded in i around 0

                \[\leadsto 0 \]
              9. Step-by-step derivation
                1. Applied rewrites68.5%

                  \[\leadsto 0 \]
              10. Recombined 2 regimes into one program.
              11. Add Preprocessing

              Alternative 10: 61.2% accurate, 6.1× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} t_0 := \mathsf{fma}\left(50, i, 100\right) \cdot n\\ \mathbf{if}\;n \leq -8.5 \cdot 10^{-131}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\ \;\;\;\;0\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
              (FPCore (i n)
               :precision binary64
               (let* ((t_0 (* (fma 50.0 i 100.0) n)))
                 (if (<= n -8.5e-131) t_0 (if (<= n 3.5e-105) 0.0 t_0))))
              double code(double i, double n) {
              	double t_0 = fma(50.0, i, 100.0) * n;
              	double tmp;
              	if (n <= -8.5e-131) {
              		tmp = t_0;
              	} else if (n <= 3.5e-105) {
              		tmp = 0.0;
              	} else {
              		tmp = t_0;
              	}
              	return tmp;
              }
              
              function code(i, n)
              	t_0 = Float64(fma(50.0, i, 100.0) * n)
              	tmp = 0.0
              	if (n <= -8.5e-131)
              		tmp = t_0;
              	elseif (n <= 3.5e-105)
              		tmp = 0.0;
              	else
              		tmp = t_0;
              	end
              	return tmp
              end
              
              code[i_, n_] := Block[{t$95$0 = N[(N[(50.0 * i + 100.0), $MachinePrecision] * n), $MachinePrecision]}, If[LessEqual[n, -8.5e-131], t$95$0, If[LessEqual[n, 3.5e-105], 0.0, t$95$0]]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              t_0 := \mathsf{fma}\left(50, i, 100\right) \cdot n\\
              \mathbf{if}\;n \leq -8.5 \cdot 10^{-131}:\\
              \;\;\;\;t\_0\\
              
              \mathbf{elif}\;n \leq 3.5 \cdot 10^{-105}:\\
              \;\;\;\;0\\
              
              \mathbf{else}:\\
              \;\;\;\;t\_0\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if n < -8.50000000000000013e-131 or 3.5e-105 < n

                1. Initial program 19.4%

                  \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
                2. Add Preprocessing
                3. Step-by-step derivation
                  1. lift-*.f64N/A

                    \[\leadsto \color{blue}{100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
                  2. lift-/.f64N/A

                    \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
                  3. associate-*r/N/A

                    \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\frac{i}{n}}} \]
                  4. lift-/.f64N/A

                    \[\leadsto \frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{\color{blue}{\frac{i}{n}}} \]
                  5. associate-/r/N/A

                    \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
                  6. lower-*.f64N/A

                    \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
                  7. *-commutativeN/A

                    \[\leadsto \frac{\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot 100}}{i} \cdot n \]
                  8. associate-/l*N/A

                    \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
                  9. lower-*.f64N/A

                    \[\leadsto \color{blue}{\left(\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right) \cdot \frac{100}{i}\right)} \cdot n \]
                  10. lift--.f64N/A

                    \[\leadsto \left(\color{blue}{\left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)} \cdot \frac{100}{i}\right) \cdot n \]
                  11. lift-pow.f64N/A

                    \[\leadsto \left(\left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
                  12. pow-to-expN/A

                    \[\leadsto \left(\left(\color{blue}{e^{\log \left(1 + \frac{i}{n}\right) \cdot n}} - 1\right) \cdot \frac{100}{i}\right) \cdot n \]
                  13. lower-expm1.f64N/A

                    \[\leadsto \left(\color{blue}{\mathsf{expm1}\left(\log \left(1 + \frac{i}{n}\right) \cdot n\right)} \cdot \frac{100}{i}\right) \cdot n \]
                  14. lower-*.f64N/A

                    \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\log \left(1 + \frac{i}{n}\right) \cdot n}\right) \cdot \frac{100}{i}\right) \cdot n \]
                  15. lift-+.f64N/A

                    \[\leadsto \left(\mathsf{expm1}\left(\log \color{blue}{\left(1 + \frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
                  16. lower-log1p.f64N/A

                    \[\leadsto \left(\mathsf{expm1}\left(\color{blue}{\mathsf{log1p}\left(\frac{i}{n}\right)} \cdot n\right) \cdot \frac{100}{i}\right) \cdot n \]
                  17. lower-/.f6479.4

                    \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
                4. Applied rewrites79.4%

                  \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right) \cdot n} \]
                5. Step-by-step derivation
                  1. lift-*.f64N/A

                    \[\leadsto \color{blue}{\left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \frac{100}{i}\right)} \cdot n \]
                  2. lift-/.f64N/A

                    \[\leadsto \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot \color{blue}{\frac{100}{i}}\right) \cdot n \]
                  3. associate-*r/N/A

                    \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
                  4. *-commutativeN/A

                    \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
                  5. lift-*.f64N/A

                    \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
                  6. lower-/.f6479.3

                    \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}} \cdot n \]
                  7. lift-*.f64N/A

                    \[\leadsto \frac{\color{blue}{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}}{i} \cdot n \]
                  8. *-commutativeN/A

                    \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
                  9. lower-*.f6479.3

                    \[\leadsto \frac{\color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}}{i} \cdot n \]
                6. Applied rewrites79.3%

                  \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i}} \cdot n \]
                7. Taylor expanded in n around inf

                  \[\leadsto \color{blue}{\left(100 \cdot \frac{e^{i} - 1}{i}\right)} \cdot n \]
                8. Step-by-step derivation
                  1. *-commutativeN/A

                    \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
                  2. lower-*.f64N/A

                    \[\leadsto \color{blue}{\left(\frac{e^{i} - 1}{i} \cdot 100\right)} \cdot n \]
                  3. lower-/.f64N/A

                    \[\leadsto \left(\color{blue}{\frac{e^{i} - 1}{i}} \cdot 100\right) \cdot n \]
                  4. lower-expm1.f6489.4

                    \[\leadsto \left(\frac{\color{blue}{\mathsf{expm1}\left(i\right)}}{i} \cdot 100\right) \cdot n \]
                9. Applied rewrites89.4%

                  \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right)} \cdot n \]
                10. Taylor expanded in i around 0

                  \[\leadsto \left(100 + \color{blue}{50 \cdot i}\right) \cdot n \]
                11. Step-by-step derivation
                  1. Applied rewrites62.6%

                    \[\leadsto \mathsf{fma}\left(50, \color{blue}{i}, 100\right) \cdot n \]

                  if -8.50000000000000013e-131 < n < 3.5e-105

                  1. Initial program 43.5%

                    \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
                  2. Add Preprocessing
                  3. Step-by-step derivation
                    1. lift-/.f64N/A

                      \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
                    2. lift--.f64N/A

                      \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
                    3. div-subN/A

                      \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)} \]
                    4. lift-/.f64N/A

                      \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\color{blue}{\frac{i}{n}}}\right) \]
                    5. clear-numN/A

                      \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
                    6. sub-negN/A

                      \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right)} \]
                    7. div-invN/A

                      \[\leadsto 100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                    8. lift-/.f64N/A

                      \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\color{blue}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                    9. clear-numN/A

                      \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \color{blue}{\frac{n}{i}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                    10. lower-fma.f64N/A

                      \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right)} \]
                    11. lift-+.f64N/A

                      \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(1 + \frac{i}{n}\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                    12. +-commutativeN/A

                      \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                    13. lower-+.f64N/A

                      \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                    14. lower-/.f64N/A

                      \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \color{blue}{\frac{n}{i}}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                    15. distribute-neg-fracN/A

                      \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
                    16. lower-/.f64N/A

                      \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
                    17. lower-neg.f6443.6

                      \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{\color{blue}{-n}}{i}\right) \]
                  4. Applied rewrites43.6%

                    \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{-n}{i}\right)} \]
                  5. Taylor expanded in i around 0

                    \[\leadsto \color{blue}{100 \cdot \frac{n + -1 \cdot n}{i}} \]
                  6. Step-by-step derivation
                    1. associate-*r/N/A

                      \[\leadsto \color{blue}{\frac{100 \cdot \left(n + -1 \cdot n\right)}{i}} \]
                    2. distribute-rgt1-inN/A

                      \[\leadsto \frac{100 \cdot \color{blue}{\left(\left(-1 + 1\right) \cdot n\right)}}{i} \]
                    3. metadata-evalN/A

                      \[\leadsto \frac{100 \cdot \left(\color{blue}{0} \cdot n\right)}{i} \]
                    4. mul0-lftN/A

                      \[\leadsto \frac{100 \cdot \color{blue}{0}}{i} \]
                    5. metadata-evalN/A

                      \[\leadsto \frac{\color{blue}{0}}{i} \]
                    6. lower-/.f6468.5

                      \[\leadsto \color{blue}{\frac{0}{i}} \]
                  7. Applied rewrites68.5%

                    \[\leadsto \color{blue}{\frac{0}{i}} \]
                  8. Taylor expanded in i around 0

                    \[\leadsto 0 \]
                  9. Step-by-step derivation
                    1. Applied rewrites68.5%

                      \[\leadsto 0 \]
                  10. Recombined 2 regimes into one program.
                  11. Add Preprocessing

                  Alternative 11: 58.6% accurate, 8.1× speedup?

                  \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;i \leq -5 \cdot 10^{+35}:\\ \;\;\;\;0\\ \mathbf{elif}\;i \leq 0.225:\\ \;\;\;\;100 \cdot n\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array} \end{array} \]
                  (FPCore (i n)
                   :precision binary64
                   (if (<= i -5e+35) 0.0 (if (<= i 0.225) (* 100.0 n) 0.0)))
                  double code(double i, double n) {
                  	double tmp;
                  	if (i <= -5e+35) {
                  		tmp = 0.0;
                  	} else if (i <= 0.225) {
                  		tmp = 100.0 * n;
                  	} else {
                  		tmp = 0.0;
                  	}
                  	return tmp;
                  }
                  
                  real(8) function code(i, n)
                      real(8), intent (in) :: i
                      real(8), intent (in) :: n
                      real(8) :: tmp
                      if (i <= (-5d+35)) then
                          tmp = 0.0d0
                      else if (i <= 0.225d0) then
                          tmp = 100.0d0 * n
                      else
                          tmp = 0.0d0
                      end if
                      code = tmp
                  end function
                  
                  public static double code(double i, double n) {
                  	double tmp;
                  	if (i <= -5e+35) {
                  		tmp = 0.0;
                  	} else if (i <= 0.225) {
                  		tmp = 100.0 * n;
                  	} else {
                  		tmp = 0.0;
                  	}
                  	return tmp;
                  }
                  
                  def code(i, n):
                  	tmp = 0
                  	if i <= -5e+35:
                  		tmp = 0.0
                  	elif i <= 0.225:
                  		tmp = 100.0 * n
                  	else:
                  		tmp = 0.0
                  	return tmp
                  
                  function code(i, n)
                  	tmp = 0.0
                  	if (i <= -5e+35)
                  		tmp = 0.0;
                  	elseif (i <= 0.225)
                  		tmp = Float64(100.0 * n);
                  	else
                  		tmp = 0.0;
                  	end
                  	return tmp
                  end
                  
                  function tmp_2 = code(i, n)
                  	tmp = 0.0;
                  	if (i <= -5e+35)
                  		tmp = 0.0;
                  	elseif (i <= 0.225)
                  		tmp = 100.0 * n;
                  	else
                  		tmp = 0.0;
                  	end
                  	tmp_2 = tmp;
                  end
                  
                  code[i_, n_] := If[LessEqual[i, -5e+35], 0.0, If[LessEqual[i, 0.225], N[(100.0 * n), $MachinePrecision], 0.0]]
                  
                  \begin{array}{l}
                  
                  \\
                  \begin{array}{l}
                  \mathbf{if}\;i \leq -5 \cdot 10^{+35}:\\
                  \;\;\;\;0\\
                  
                  \mathbf{elif}\;i \leq 0.225:\\
                  \;\;\;\;100 \cdot n\\
                  
                  \mathbf{else}:\\
                  \;\;\;\;0\\
                  
                  
                  \end{array}
                  \end{array}
                  
                  Derivation
                  1. Split input into 2 regimes
                  2. if i < -5.00000000000000021e35 or 0.225000000000000006 < i

                    1. Initial program 41.5%

                      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
                    2. Add Preprocessing
                    3. Step-by-step derivation
                      1. lift-/.f64N/A

                        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
                      2. lift--.f64N/A

                        \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
                      3. div-subN/A

                        \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)} \]
                      4. lift-/.f64N/A

                        \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\color{blue}{\frac{i}{n}}}\right) \]
                      5. clear-numN/A

                        \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
                      6. sub-negN/A

                        \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right)} \]
                      7. div-invN/A

                        \[\leadsto 100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                      8. lift-/.f64N/A

                        \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\color{blue}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                      9. clear-numN/A

                        \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \color{blue}{\frac{n}{i}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                      10. lower-fma.f64N/A

                        \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right)} \]
                      11. lift-+.f64N/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(1 + \frac{i}{n}\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                      12. +-commutativeN/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                      13. lower-+.f64N/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                      14. lower-/.f64N/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \color{blue}{\frac{n}{i}}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                      15. distribute-neg-fracN/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
                      16. lower-/.f64N/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
                      17. lower-neg.f6441.6

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{\color{blue}{-n}}{i}\right) \]
                    4. Applied rewrites41.6%

                      \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{-n}{i}\right)} \]
                    5. Taylor expanded in i around 0

                      \[\leadsto \color{blue}{100 \cdot \frac{n + -1 \cdot n}{i}} \]
                    6. Step-by-step derivation
                      1. associate-*r/N/A

                        \[\leadsto \color{blue}{\frac{100 \cdot \left(n + -1 \cdot n\right)}{i}} \]
                      2. distribute-rgt1-inN/A

                        \[\leadsto \frac{100 \cdot \color{blue}{\left(\left(-1 + 1\right) \cdot n\right)}}{i} \]
                      3. metadata-evalN/A

                        \[\leadsto \frac{100 \cdot \left(\color{blue}{0} \cdot n\right)}{i} \]
                      4. mul0-lftN/A

                        \[\leadsto \frac{100 \cdot \color{blue}{0}}{i} \]
                      5. metadata-evalN/A

                        \[\leadsto \frac{\color{blue}{0}}{i} \]
                      6. lower-/.f6427.3

                        \[\leadsto \color{blue}{\frac{0}{i}} \]
                    7. Applied rewrites27.3%

                      \[\leadsto \color{blue}{\frac{0}{i}} \]
                    8. Taylor expanded in i around 0

                      \[\leadsto 0 \]
                    9. Step-by-step derivation
                      1. Applied rewrites27.3%

                        \[\leadsto 0 \]

                      if -5.00000000000000021e35 < i < 0.225000000000000006

                      1. Initial program 10.5%

                        \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
                      2. Add Preprocessing
                      3. Taylor expanded in i around 0

                        \[\leadsto \color{blue}{100 \cdot n} \]
                      4. Step-by-step derivation
                        1. lower-*.f6481.3

                          \[\leadsto \color{blue}{100 \cdot n} \]
                      5. Applied rewrites81.3%

                        \[\leadsto \color{blue}{100 \cdot n} \]
                    10. Recombined 2 regimes into one program.
                    11. Add Preprocessing

                    Alternative 12: 17.6% accurate, 146.0× speedup?

                    \[\begin{array}{l} \\ 0 \end{array} \]
                    (FPCore (i n) :precision binary64 0.0)
                    double code(double i, double n) {
                    	return 0.0;
                    }
                    
                    real(8) function code(i, n)
                        real(8), intent (in) :: i
                        real(8), intent (in) :: n
                        code = 0.0d0
                    end function
                    
                    public static double code(double i, double n) {
                    	return 0.0;
                    }
                    
                    def code(i, n):
                    	return 0.0
                    
                    function code(i, n)
                    	return 0.0
                    end
                    
                    function tmp = code(i, n)
                    	tmp = 0.0;
                    end
                    
                    code[i_, n_] := 0.0
                    
                    \begin{array}{l}
                    
                    \\
                    0
                    \end{array}
                    
                    Derivation
                    1. Initial program 24.7%

                      \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
                    2. Add Preprocessing
                    3. Step-by-step derivation
                      1. lift-/.f64N/A

                        \[\leadsto 100 \cdot \color{blue}{\frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}} \]
                      2. lift--.f64N/A

                        \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
                      3. div-subN/A

                        \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\frac{i}{n}}\right)} \]
                      4. lift-/.f64N/A

                        \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \frac{1}{\color{blue}{\frac{i}{n}}}\right) \]
                      5. clear-numN/A

                        \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
                      6. sub-negN/A

                        \[\leadsto 100 \cdot \color{blue}{\left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right)} \]
                      7. div-invN/A

                        \[\leadsto 100 \cdot \left(\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                      8. lift-/.f64N/A

                        \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \frac{1}{\color{blue}{\frac{i}{n}}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                      9. clear-numN/A

                        \[\leadsto 100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} \cdot \color{blue}{\frac{n}{i}} + \left(\mathsf{neg}\left(\frac{n}{i}\right)\right)\right) \]
                      10. lower-fma.f64N/A

                        \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(1 + \frac{i}{n}\right)}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right)} \]
                      11. lift-+.f64N/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(1 + \frac{i}{n}\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                      12. +-commutativeN/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                      13. lower-+.f64N/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\color{blue}{\left(\frac{i}{n} + 1\right)}}^{n}, \frac{n}{i}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                      14. lower-/.f64N/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \color{blue}{\frac{n}{i}}, \mathsf{neg}\left(\frac{n}{i}\right)\right) \]
                      15. distribute-neg-fracN/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
                      16. lower-/.f64N/A

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \color{blue}{\frac{\mathsf{neg}\left(n\right)}{i}}\right) \]
                      17. lower-neg.f6424.7

                        \[\leadsto 100 \cdot \mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{\color{blue}{-n}}{i}\right) \]
                    4. Applied rewrites24.7%

                      \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left({\left(\frac{i}{n} + 1\right)}^{n}, \frac{n}{i}, \frac{-n}{i}\right)} \]
                    5. Taylor expanded in i around 0

                      \[\leadsto \color{blue}{100 \cdot \frac{n + -1 \cdot n}{i}} \]
                    6. Step-by-step derivation
                      1. associate-*r/N/A

                        \[\leadsto \color{blue}{\frac{100 \cdot \left(n + -1 \cdot n\right)}{i}} \]
                      2. distribute-rgt1-inN/A

                        \[\leadsto \frac{100 \cdot \color{blue}{\left(\left(-1 + 1\right) \cdot n\right)}}{i} \]
                      3. metadata-evalN/A

                        \[\leadsto \frac{100 \cdot \left(\color{blue}{0} \cdot n\right)}{i} \]
                      4. mul0-lftN/A

                        \[\leadsto \frac{100 \cdot \color{blue}{0}}{i} \]
                      5. metadata-evalN/A

                        \[\leadsto \frac{\color{blue}{0}}{i} \]
                      6. lower-/.f6417.8

                        \[\leadsto \color{blue}{\frac{0}{i}} \]
                    7. Applied rewrites17.8%

                      \[\leadsto \color{blue}{\frac{0}{i}} \]
                    8. Taylor expanded in i around 0

                      \[\leadsto 0 \]
                    9. Step-by-step derivation
                      1. Applied rewrites17.8%

                        \[\leadsto 0 \]
                      2. Add Preprocessing

                      Developer Target 1: 34.3% accurate, 0.5× speedup?

                      \[\begin{array}{l} \\ \begin{array}{l} t_0 := 1 + \frac{i}{n}\\ 100 \cdot \frac{e^{n \cdot \begin{array}{l} \mathbf{if}\;t\_0 = 1:\\ \;\;\;\;\frac{i}{n}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{i}{n} \cdot \log t\_0}{\left(\frac{i}{n} + 1\right) - 1}\\ \end{array}} - 1}{\frac{i}{n}} \end{array} \end{array} \]
                      (FPCore (i n)
                       :precision binary64
                       (let* ((t_0 (+ 1.0 (/ i n))))
                         (*
                          100.0
                          (/
                           (-
                            (exp
                             (*
                              n
                              (if (== t_0 1.0)
                                (/ i n)
                                (/ (* (/ i n) (log t_0)) (- (+ (/ i n) 1.0) 1.0)))))
                            1.0)
                           (/ i n)))))
                      double code(double i, double n) {
                      	double t_0 = 1.0 + (i / n);
                      	double tmp;
                      	if (t_0 == 1.0) {
                      		tmp = i / n;
                      	} else {
                      		tmp = ((i / n) * log(t_0)) / (((i / n) + 1.0) - 1.0);
                      	}
                      	return 100.0 * ((exp((n * tmp)) - 1.0) / (i / n));
                      }
                      
                      real(8) function code(i, n)
                          real(8), intent (in) :: i
                          real(8), intent (in) :: n
                          real(8) :: t_0
                          real(8) :: tmp
                          t_0 = 1.0d0 + (i / n)
                          if (t_0 == 1.0d0) then
                              tmp = i / n
                          else
                              tmp = ((i / n) * log(t_0)) / (((i / n) + 1.0d0) - 1.0d0)
                          end if
                          code = 100.0d0 * ((exp((n * tmp)) - 1.0d0) / (i / n))
                      end function
                      
                      public static double code(double i, double n) {
                      	double t_0 = 1.0 + (i / n);
                      	double tmp;
                      	if (t_0 == 1.0) {
                      		tmp = i / n;
                      	} else {
                      		tmp = ((i / n) * Math.log(t_0)) / (((i / n) + 1.0) - 1.0);
                      	}
                      	return 100.0 * ((Math.exp((n * tmp)) - 1.0) / (i / n));
                      }
                      
                      def code(i, n):
                      	t_0 = 1.0 + (i / n)
                      	tmp = 0
                      	if t_0 == 1.0:
                      		tmp = i / n
                      	else:
                      		tmp = ((i / n) * math.log(t_0)) / (((i / n) + 1.0) - 1.0)
                      	return 100.0 * ((math.exp((n * tmp)) - 1.0) / (i / n))
                      
                      function code(i, n)
                      	t_0 = Float64(1.0 + Float64(i / n))
                      	tmp = 0.0
                      	if (t_0 == 1.0)
                      		tmp = Float64(i / n);
                      	else
                      		tmp = Float64(Float64(Float64(i / n) * log(t_0)) / Float64(Float64(Float64(i / n) + 1.0) - 1.0));
                      	end
                      	return Float64(100.0 * Float64(Float64(exp(Float64(n * tmp)) - 1.0) / Float64(i / n)))
                      end
                      
                      function tmp_2 = code(i, n)
                      	t_0 = 1.0 + (i / n);
                      	tmp = 0.0;
                      	if (t_0 == 1.0)
                      		tmp = i / n;
                      	else
                      		tmp = ((i / n) * log(t_0)) / (((i / n) + 1.0) - 1.0);
                      	end
                      	tmp_2 = 100.0 * ((exp((n * tmp)) - 1.0) / (i / n));
                      end
                      
                      code[i_, n_] := Block[{t$95$0 = N[(1.0 + N[(i / n), $MachinePrecision]), $MachinePrecision]}, N[(100.0 * N[(N[(N[Exp[N[(n * If[Equal[t$95$0, 1.0], N[(i / n), $MachinePrecision], N[(N[(N[(i / n), $MachinePrecision] * N[Log[t$95$0], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(i / n), $MachinePrecision] + 1.0), $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]], $MachinePrecision] - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
                      
                      \begin{array}{l}
                      
                      \\
                      \begin{array}{l}
                      t_0 := 1 + \frac{i}{n}\\
                      100 \cdot \frac{e^{n \cdot \begin{array}{l}
                      \mathbf{if}\;t\_0 = 1:\\
                      \;\;\;\;\frac{i}{n}\\
                      
                      \mathbf{else}:\\
                      \;\;\;\;\frac{\frac{i}{n} \cdot \log t\_0}{\left(\frac{i}{n} + 1\right) - 1}\\
                      
                      
                      \end{array}} - 1}{\frac{i}{n}}
                      \end{array}
                      \end{array}
                      

                      Reproduce

                      ?
                      herbie shell --seed 2024249 
                      (FPCore (i n)
                        :name "Compound Interest"
                        :precision binary64
                      
                        :alt
                        (! :herbie-platform default (let ((lnbase (if (== (+ 1 (/ i n)) 1) (/ i n) (/ (* (/ i n) (log (+ 1 (/ i n)))) (- (+ (/ i n) 1) 1))))) (* 100 (/ (- (exp (* n lnbase)) 1) (/ i n)))))
                      
                        (* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n))))