Compound Interest

Percentage Accurate: 28.9% → 96.0%
Time: 11.8s
Alternatives: 21
Speedup: 24.3×

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 21 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.9% 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: 96.0% 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 -1 \cdot 10^{-84}:\\ \;\;\;\;\frac{t\_0 \cdot n - n}{i} \cdot 100\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{\frac{i}{n}}\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \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 -1e-84)
     (* (/ (- (* t_0 n) n) i) 100.0)
     (if (<= t_1 INFINITY)
       (/ (* (expm1 (* (log1p (/ i n)) n)) 100.0) (/ i n))
       (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.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 <= -1e-84) {
		tmp = (((t_0 * n) - n) / i) * 100.0;
	} else if (t_1 <= ((double) INFINITY)) {
		tmp = (expm1((log1p((i / n)) * n)) * 100.0) / (i / n);
	} else {
		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.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 <= -1e-84)
		tmp = Float64(Float64(Float64(Float64(t_0 * n) - n) / i) * 100.0);
	elseif (t_1 <= Inf)
		tmp = Float64(Float64(expm1(Float64(log1p(Float64(i / n)) * n)) * 100.0) / Float64(i / n));
	else
		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.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, -1e-84], N[(N[(N[(N[(t$95$0 * n), $MachinePrecision] - n), $MachinePrecision] / i), $MachinePrecision] * 100.0), $MachinePrecision], If[LessEqual[t$95$1, Infinity], 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], N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $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 -1 \cdot 10^{-84}:\\
\;\;\;\;\frac{t\_0 \cdot n - n}{i} \cdot 100\\

\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{\frac{i}{n}}\\

\mathbf{else}:\\
\;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\


\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)) < -1e-84

    1. Initial program 99.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. lower--.f64N/A

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

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

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

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

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

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

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

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

        \[\leadsto 100 \cdot \left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{i} \cdot n - \color{blue}{\frac{n}{i}}\right) \]
    4. Applied rewrites99.9%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto 100 \cdot \frac{\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} \cdot n - n}{i} \]
    6. Applied rewrites99.9%

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

    if -1e-84 < (/.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 24.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. lower-/.f64N/A

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

        \[\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.f6497.1

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

      \[\leadsto \color{blue}{\frac{100 \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{\frac{i}{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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
    4. Step-by-step derivation
      1. lower-+.f6413.3

        \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
    5. Applied rewrites13.3%

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

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

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

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

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

        \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
      6. lower-/.f6413.3

        \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
    7. Applied rewrites13.3%

      \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
    8. Taylor expanded in i around 0

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

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

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

        \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
      4. associate-*r/N/A

        \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
      5. metadata-evalN/A

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

        \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
      7. unpow2N/A

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

        \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
      9. associate-*r/N/A

        \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
      10. metadata-evalN/A

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

        \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
      12. lower-/.f6499.8

        \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
    10. Applied rewrites99.8%

      \[\leadsto \frac{100}{\color{blue}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification97.7%

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

Alternative 2: 83.8% 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}}\\ t_2 := \frac{t\_0 \cdot n - n}{i} \cdot 100\\ \mathbf{if}\;t\_1 \leq -1 \cdot 10^{-153}:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;t\_1 \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{fma}\left(\mathsf{fma}\left(\frac{0.3333333333333333}{n}, \frac{i}{n}, \frac{-0.5}{n}\right) \cdot i, i, i\right)\right) \cdot 100}{\frac{i}{n}}\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;t\_2\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \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)))
        (t_2 (* (/ (- (* t_0 n) n) i) 100.0)))
   (if (<= t_1 -1e-153)
     t_2
     (if (<= t_1 0.0)
       (/
        (*
         (expm1
          (fma (* (fma (/ 0.3333333333333333 n) (/ i n) (/ -0.5 n)) i) i i))
         100.0)
        (/ i n))
       (if (<= t_1 INFINITY)
         t_2
         (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.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 t_2 = (((t_0 * n) - n) / i) * 100.0;
	double tmp;
	if (t_1 <= -1e-153) {
		tmp = t_2;
	} else if (t_1 <= 0.0) {
		tmp = (expm1(fma((fma((0.3333333333333333 / n), (i / n), (-0.5 / n)) * i), i, i)) * 100.0) / (i / n);
	} else if (t_1 <= ((double) INFINITY)) {
		tmp = t_2;
	} else {
		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.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))
	t_2 = Float64(Float64(Float64(Float64(t_0 * n) - n) / i) * 100.0)
	tmp = 0.0
	if (t_1 <= -1e-153)
		tmp = t_2;
	elseif (t_1 <= 0.0)
		tmp = Float64(Float64(expm1(fma(Float64(fma(Float64(0.3333333333333333 / n), Float64(i / n), Float64(-0.5 / n)) * i), i, i)) * 100.0) / Float64(i / n));
	elseif (t_1 <= Inf)
		tmp = t_2;
	else
		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.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]}, Block[{t$95$2 = N[(N[(N[(N[(t$95$0 * n), $MachinePrecision] - n), $MachinePrecision] / i), $MachinePrecision] * 100.0), $MachinePrecision]}, If[LessEqual[t$95$1, -1e-153], t$95$2, If[LessEqual[t$95$1, 0.0], N[(N[(N[(Exp[N[(N[(N[(N[(0.3333333333333333 / n), $MachinePrecision] * N[(i / n), $MachinePrecision] + N[(-0.5 / n), $MachinePrecision]), $MachinePrecision] * i), $MachinePrecision] * i + i), $MachinePrecision]] - 1), $MachinePrecision] * 100.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], t$95$2, N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $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}}\\
t_2 := \frac{t\_0 \cdot n - n}{i} \cdot 100\\
\mathbf{if}\;t\_1 \leq -1 \cdot 10^{-153}:\\
\;\;\;\;t\_2\\

\mathbf{elif}\;t\_1 \leq 0:\\
\;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{fma}\left(\mathsf{fma}\left(\frac{0.3333333333333333}{n}, \frac{i}{n}, \frac{-0.5}{n}\right) \cdot i, i, i\right)\right) \cdot 100}{\frac{i}{n}}\\

\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;t\_2\\

\mathbf{else}:\\
\;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\


\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)) < -1.00000000000000004e-153 or -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 92.8%

      \[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. lower--.f64N/A

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

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

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

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

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

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

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

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

        \[\leadsto 100 \cdot \left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{i} \cdot n - \color{blue}{\frac{n}{i}}\right) \]
    4. Applied rewrites92.9%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -1.00000000000000004e-153 < (/.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 15.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. clear-numN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{\mathsf{expm1}\left(\color{blue}{\mathsf{fma}\left(i \cdot \left(\frac{1}{3} \cdot \frac{i}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}\right), i, i\right)}\right) \cdot 100}{\frac{i}{n}} \]
    9. Applied rewrites82.9%

      \[\leadsto \frac{\mathsf{expm1}\left(\color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(\frac{0.3333333333333333}{n}, \frac{i}{n}, \frac{-0.5}{n}\right) \cdot i, i, i\right)}\right) \cdot 100}{\frac{i}{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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
    4. Step-by-step derivation
      1. lower-+.f6413.3

        \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
    5. Applied rewrites13.3%

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

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

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

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

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

        \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
      6. lower-/.f6413.3

        \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
    7. Applied rewrites13.3%

      \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
    8. Taylor expanded in i around 0

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

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

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

        \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
      4. associate-*r/N/A

        \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
      5. metadata-evalN/A

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

        \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
      7. unpow2N/A

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

        \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
      9. associate-*r/N/A

        \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
      10. metadata-evalN/A

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

        \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
      12. lower-/.f6499.8

        \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
    10. Applied rewrites99.8%

      \[\leadsto \frac{100}{\color{blue}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification87.4%

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

Alternative 3: 84.2% 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}}\\ t_2 := \frac{t\_0 \cdot n - n}{i} \cdot 100\\ \mathbf{if}\;t\_1 \leq -5 \cdot 10^{-259}:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;t\_1 \leq 0:\\ \;\;\;\;\left(100 \cdot n\right) \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;t\_2\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \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)))
        (t_2 (* (/ (- (* t_0 n) n) i) 100.0)))
   (if (<= t_1 -5e-259)
     t_2
     (if (<= t_1 0.0)
       (* (* 100.0 n) (/ (expm1 i) i))
       (if (<= t_1 INFINITY)
         t_2
         (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.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 t_2 = (((t_0 * n) - n) / i) * 100.0;
	double tmp;
	if (t_1 <= -5e-259) {
		tmp = t_2;
	} else if (t_1 <= 0.0) {
		tmp = (100.0 * n) * (expm1(i) / i);
	} else if (t_1 <= ((double) INFINITY)) {
		tmp = t_2;
	} else {
		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.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))
	t_2 = Float64(Float64(Float64(Float64(t_0 * n) - n) / i) * 100.0)
	tmp = 0.0
	if (t_1 <= -5e-259)
		tmp = t_2;
	elseif (t_1 <= 0.0)
		tmp = Float64(Float64(100.0 * n) * Float64(expm1(i) / i));
	elseif (t_1 <= Inf)
		tmp = t_2;
	else
		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.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]}, Block[{t$95$2 = N[(N[(N[(N[(t$95$0 * n), $MachinePrecision] - n), $MachinePrecision] / i), $MachinePrecision] * 100.0), $MachinePrecision]}, If[LessEqual[t$95$1, -5e-259], t$95$2, If[LessEqual[t$95$1, 0.0], N[(N[(100.0 * n), $MachinePrecision] * N[(N[(Exp[i] - 1), $MachinePrecision] / i), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], t$95$2, N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $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}}\\
t_2 := \frac{t\_0 \cdot n - n}{i} \cdot 100\\
\mathbf{if}\;t\_1 \leq -5 \cdot 10^{-259}:\\
\;\;\;\;t\_2\\

\mathbf{elif}\;t\_1 \leq 0:\\
\;\;\;\;\left(100 \cdot n\right) \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\\

\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;t\_2\\

\mathbf{else}:\\
\;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\


\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)) < -4.99999999999999977e-259 or -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 93.0%

      \[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. lower--.f64N/A

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

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

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

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

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

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

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

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

        \[\leadsto 100 \cdot \left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{i} \cdot n - \color{blue}{\frac{n}{i}}\right) \]
    4. Applied rewrites93.0%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto 100 \cdot \frac{\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} \cdot n - n}{i} \]
    6. Applied rewrites93.3%

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

    if -4.99999999999999977e-259 < (/.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 14.6%

      \[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.f6482.8

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

      \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n} \]
    6. Step-by-step derivation
      1. Applied rewrites82.8%

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

      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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      4. Step-by-step derivation
        1. lower-+.f6413.3

          \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      5. Applied rewrites13.3%

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

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

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

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

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

          \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
        6. lower-/.f6413.3

          \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
      7. Applied rewrites13.3%

        \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
      8. Taylor expanded in i around 0

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

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

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
        4. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        5. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        7. unpow2N/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        9. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
        10. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
        12. lower-/.f6499.8

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
      10. Applied rewrites99.8%

        \[\leadsto \frac{100}{\color{blue}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}} \]
    7. Recombined 3 regimes into one program.
    8. Final simplification87.3%

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

    Alternative 4: 95.4% 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 -10000:\\ \;\;\;\;\mathsf{fma}\left(\frac{t\_0}{i} \cdot n, 100, \frac{-1}{\frac{i}{100 \cdot n}}\right)\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \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 -10000.0)
         (fma (* (/ t_0 i) n) 100.0 (/ -1.0 (/ i (* 100.0 n))))
         (if (<= t_1 INFINITY)
           (* (/ (* (expm1 (* (log1p (/ i n)) n)) 100.0) i) n)
           (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.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 <= -10000.0) {
    		tmp = fma(((t_0 / i) * n), 100.0, (-1.0 / (i / (100.0 * n))));
    	} else if (t_1 <= ((double) INFINITY)) {
    		tmp = ((expm1((log1p((i / n)) * n)) * 100.0) / i) * n;
    	} else {
    		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.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 <= -10000.0)
    		tmp = fma(Float64(Float64(t_0 / i) * n), 100.0, Float64(-1.0 / Float64(i / Float64(100.0 * n))));
    	elseif (t_1 <= Inf)
    		tmp = Float64(Float64(Float64(expm1(Float64(log1p(Float64(i / n)) * n)) * 100.0) / i) * n);
    	else
    		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.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, -10000.0], N[(N[(N[(t$95$0 / i), $MachinePrecision] * n), $MachinePrecision] * 100.0 + N[(-1.0 / N[(i / N[(100.0 * n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], 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], N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $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 -10000:\\
    \;\;\;\;\mathsf{fma}\left(\frac{t\_0}{i} \cdot n, 100, \frac{-1}{\frac{i}{100 \cdot n}}\right)\\
    
    \mathbf{elif}\;t\_1 \leq \infty:\\
    \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i} \cdot n\\
    
    \mathbf{else}:\\
    \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\
    
    
    \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)) < -1e4

      1. Initial program 99.8%

        \[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. lift--.f64N/A

          \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
        4. 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)} \]
        5. 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) \]
        6. clear-numN/A

          \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
        7. 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)} \]
        8. distribute-rgt-inN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      if -1e4 < (/.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 26.3%

        \[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. clear-numN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          \[\leadsto \color{blue}{\frac{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}{i} \cdot n} \]
      6. Applied rewrites96.7%

        \[\leadsto \color{blue}{\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      4. Step-by-step derivation
        1. lower-+.f6413.3

          \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      5. Applied rewrites13.3%

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

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

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

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

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

          \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
        6. lower-/.f6413.3

          \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
      7. Applied rewrites13.3%

        \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
      8. Taylor expanded in i around 0

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

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

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
        4. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        5. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        7. unpow2N/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        9. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
        10. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
        12. lower-/.f6499.8

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
      10. Applied rewrites99.8%

        \[\leadsto \frac{100}{\color{blue}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}} \]
    3. Recombined 3 regimes into one program.
    4. Final simplification97.3%

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

    Alternative 5: 95.2% 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 -1 \cdot 10^{-124}:\\ \;\;\;\;\frac{t\_0 \cdot n - n}{i} \cdot 100\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\left(100 \cdot n\right) \cdot \frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \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 -1e-124)
         (* (/ (- (* t_0 n) n) i) 100.0)
         (if (<= t_1 INFINITY)
           (* (* 100.0 n) (/ (expm1 (* (log1p (/ i n)) n)) i))
           (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.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 <= -1e-124) {
    		tmp = (((t_0 * n) - n) / i) * 100.0;
    	} else if (t_1 <= ((double) INFINITY)) {
    		tmp = (100.0 * n) * (expm1((log1p((i / n)) * n)) / i);
    	} else {
    		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.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 <= -1e-124)
    		tmp = Float64(Float64(Float64(Float64(t_0 * n) - n) / i) * 100.0);
    	elseif (t_1 <= Inf)
    		tmp = Float64(Float64(100.0 * n) * Float64(expm1(Float64(log1p(Float64(i / n)) * n)) / i));
    	else
    		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.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, -1e-124], N[(N[(N[(N[(t$95$0 * n), $MachinePrecision] - n), $MachinePrecision] / i), $MachinePrecision] * 100.0), $MachinePrecision], If[LessEqual[t$95$1, Infinity], N[(N[(100.0 * n), $MachinePrecision] * N[(N[(Exp[N[(N[Log[1 + N[(i / n), $MachinePrecision]], $MachinePrecision] * n), $MachinePrecision]] - 1), $MachinePrecision] / i), $MachinePrecision]), $MachinePrecision], N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $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 -1 \cdot 10^{-124}:\\
    \;\;\;\;\frac{t\_0 \cdot n - n}{i} \cdot 100\\
    
    \mathbf{elif}\;t\_1 \leq \infty:\\
    \;\;\;\;\left(100 \cdot n\right) \cdot \frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i}\\
    
    \mathbf{else}:\\
    \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\
    
    
    \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)) < -9.99999999999999933e-125

      1. Initial program 99.6%

        \[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. lower--.f64N/A

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

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

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

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

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

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

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

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

          \[\leadsto 100 \cdot \left(\frac{{\left(\frac{i}{n} + 1\right)}^{n}}{i} \cdot n - \color{blue}{\frac{n}{i}}\right) \]
      4. Applied rewrites99.9%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          \[\leadsto 100 \cdot \frac{\color{blue}{{\left(\frac{i}{n} + 1\right)}^{n}} \cdot n - n}{i} \]
      6. Applied rewrites99.9%

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

      if -9.99999999999999933e-125 < (/.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 24.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. *-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-*.f6496.6

          \[\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 rewrites96.6%

        \[\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 +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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      4. Step-by-step derivation
        1. lower-+.f6413.3

          \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      5. Applied rewrites13.3%

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

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

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

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

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

          \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
        6. lower-/.f6413.3

          \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
      7. Applied rewrites13.3%

        \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
      8. Taylor expanded in i around 0

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

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

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
        4. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        5. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        7. unpow2N/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        9. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
        10. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
        12. lower-/.f6499.8

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
      10. Applied rewrites99.8%

        \[\leadsto \frac{100}{\color{blue}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}} \]
    3. Recombined 3 regimes into one program.
    4. Final simplification97.3%

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

    Alternative 6: 95.2% 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 -10000:\\ \;\;\;\;\mathsf{fma}\left(\frac{t\_0}{i} \cdot n, 100, \frac{-1}{\frac{i}{100 \cdot n}}\right)\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\left(\frac{100}{i} \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \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 -10000.0)
         (fma (* (/ t_0 i) n) 100.0 (/ -1.0 (/ i (* 100.0 n))))
         (if (<= t_1 INFINITY)
           (* (* (/ 100.0 i) (expm1 (* (log1p (/ i n)) n))) n)
           (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.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 <= -10000.0) {
    		tmp = fma(((t_0 / i) * n), 100.0, (-1.0 / (i / (100.0 * n))));
    	} else if (t_1 <= ((double) INFINITY)) {
    		tmp = ((100.0 / i) * expm1((log1p((i / n)) * n))) * n;
    	} else {
    		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.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 <= -10000.0)
    		tmp = fma(Float64(Float64(t_0 / i) * n), 100.0, Float64(-1.0 / Float64(i / Float64(100.0 * n))));
    	elseif (t_1 <= Inf)
    		tmp = Float64(Float64(Float64(100.0 / i) * expm1(Float64(log1p(Float64(i / n)) * n))) * n);
    	else
    		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.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, -10000.0], N[(N[(N[(t$95$0 / i), $MachinePrecision] * n), $MachinePrecision] * 100.0 + N[(-1.0 / N[(i / N[(100.0 * n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], 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], N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $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 -10000:\\
    \;\;\;\;\mathsf{fma}\left(\frac{t\_0}{i} \cdot n, 100, \frac{-1}{\frac{i}{100 \cdot n}}\right)\\
    
    \mathbf{elif}\;t\_1 \leq \infty:\\
    \;\;\;\;\left(\frac{100}{i} \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)\right) \cdot n\\
    
    \mathbf{else}:\\
    \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\
    
    
    \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)) < -1e4

      1. Initial program 99.8%

        \[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. lift--.f64N/A

          \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
        4. 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)} \]
        5. 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) \]
        6. clear-numN/A

          \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
        7. 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)} \]
        8. distribute-rgt-inN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      if -1e4 < (/.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 26.3%

        \[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-/.f6496.7

          \[\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 rewrites96.7%

        \[\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 +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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      4. Step-by-step derivation
        1. lower-+.f6413.3

          \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      5. Applied rewrites13.3%

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

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

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

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

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

          \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
        6. lower-/.f6413.3

          \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
      7. Applied rewrites13.3%

        \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
      8. Taylor expanded in i around 0

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

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

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
        4. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        5. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        7. unpow2N/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        9. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
        10. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
        12. lower-/.f6499.8

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
      10. Applied rewrites99.8%

        \[\leadsto \frac{100}{\color{blue}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}} \]
    3. Recombined 3 regimes into one program.
    4. Final simplification97.3%

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

    Alternative 7: 94.1% 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 -10000:\\ \;\;\;\;\mathsf{fma}\left(\frac{t\_0}{i} \cdot n, 100, \frac{-1}{\frac{i}{100 \cdot n}}\right)\\ \mathbf{elif}\;t\_1 \leq \infty:\\ \;\;\;\;\left(\frac{100}{i} \cdot n\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \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 -10000.0)
         (fma (* (/ t_0 i) n) 100.0 (/ -1.0 (/ i (* 100.0 n))))
         (if (<= t_1 INFINITY)
           (* (* (/ 100.0 i) n) (expm1 (* (log1p (/ i n)) n)))
           (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.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 <= -10000.0) {
    		tmp = fma(((t_0 / i) * n), 100.0, (-1.0 / (i / (100.0 * n))));
    	} else if (t_1 <= ((double) INFINITY)) {
    		tmp = ((100.0 / i) * n) * expm1((log1p((i / n)) * n));
    	} else {
    		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.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 <= -10000.0)
    		tmp = fma(Float64(Float64(t_0 / i) * n), 100.0, Float64(-1.0 / Float64(i / Float64(100.0 * n))));
    	elseif (t_1 <= Inf)
    		tmp = Float64(Float64(Float64(100.0 / i) * n) * expm1(Float64(log1p(Float64(i / n)) * n)));
    	else
    		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.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, -10000.0], N[(N[(N[(t$95$0 / i), $MachinePrecision] * n), $MachinePrecision] * 100.0 + N[(-1.0 / N[(i / N[(100.0 * n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], N[(N[(N[(100.0 / i), $MachinePrecision] * n), $MachinePrecision] * N[(Exp[N[(N[Log[1 + N[(i / n), $MachinePrecision]], $MachinePrecision] * n), $MachinePrecision]] - 1), $MachinePrecision]), $MachinePrecision], N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $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 -10000:\\
    \;\;\;\;\mathsf{fma}\left(\frac{t\_0}{i} \cdot n, 100, \frac{-1}{\frac{i}{100 \cdot n}}\right)\\
    
    \mathbf{elif}\;t\_1 \leq \infty:\\
    \;\;\;\;\left(\frac{100}{i} \cdot n\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)\\
    
    \mathbf{else}:\\
    \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\
    
    
    \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)) < -1e4

      1. Initial program 99.8%

        \[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. lift--.f64N/A

          \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
        4. 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)} \]
        5. 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) \]
        6. clear-numN/A

          \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
        7. 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)} \]
        8. distribute-rgt-inN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      if -1e4 < (/.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 26.3%

        \[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. clear-numN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      4. Step-by-step derivation
        1. lower-+.f6413.3

          \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      5. Applied rewrites13.3%

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

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

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

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

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

          \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
        6. lower-/.f6413.3

          \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
      7. Applied rewrites13.3%

        \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
      8. Taylor expanded in i around 0

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

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

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
        4. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        5. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        7. unpow2N/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        9. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
        10. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
        12. lower-/.f6499.8

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
      10. Applied rewrites99.8%

        \[\leadsto \frac{100}{\color{blue}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}} \]
    3. Recombined 3 regimes into one program.
    4. Final simplification96.6%

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

    Alternative 8: 83.1% accurate, 1.1× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -10200000:\\ \;\;\;\;\frac{\mathsf{expm1}\left(i\right) \cdot n}{i} \cdot 100\\ \mathbf{elif}\;n \leq 44:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(100 \cdot n\right) \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\\ \end{array} \end{array} \]
    (FPCore (i n)
     :precision binary64
     (if (<= n -10200000.0)
       (* (/ (* (expm1 i) n) i) 100.0)
       (if (<= n 44.0)
         (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.0 n)))
         (* (* 100.0 n) (/ (expm1 i) i)))))
    double code(double i, double n) {
    	double tmp;
    	if (n <= -10200000.0) {
    		tmp = ((expm1(i) * n) / i) * 100.0;
    	} else if (n <= 44.0) {
    		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.0 / n));
    	} else {
    		tmp = (100.0 * n) * (expm1(i) / i);
    	}
    	return tmp;
    }
    
    function code(i, n)
    	tmp = 0.0
    	if (n <= -10200000.0)
    		tmp = Float64(Float64(Float64(expm1(i) * n) / i) * 100.0);
    	elseif (n <= 44.0)
    		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.0 / n)));
    	else
    		tmp = Float64(Float64(100.0 * n) * Float64(expm1(i) / i));
    	end
    	return tmp
    end
    
    code[i_, n_] := If[LessEqual[n, -10200000.0], N[(N[(N[(N[(Exp[i] - 1), $MachinePrecision] * n), $MachinePrecision] / i), $MachinePrecision] * 100.0), $MachinePrecision], If[LessEqual[n, 44.0], N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(100.0 * n), $MachinePrecision] * N[(N[(Exp[i] - 1), $MachinePrecision] / i), $MachinePrecision]), $MachinePrecision]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    \mathbf{if}\;n \leq -10200000:\\
    \;\;\;\;\frac{\mathsf{expm1}\left(i\right) \cdot n}{i} \cdot 100\\
    
    \mathbf{elif}\;n \leq 44:\\
    \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\
    
    \mathbf{else}:\\
    \;\;\;\;\left(100 \cdot n\right) \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if n < -1.02e7

      1. Initial program 19.9%

        \[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 100 \cdot \color{blue}{\frac{n \cdot \left(e^{i} - 1\right)}{i}} \]
      4. Step-by-step derivation
        1. lower-/.f64N/A

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

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

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

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

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

      if -1.02e7 < n < 44

      1. Initial program 27.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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      4. Step-by-step derivation
        1. lower-+.f6426.1

          \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
      5. Applied rewrites26.1%

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

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

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

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

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

          \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
        6. lower-/.f6426.1

          \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
      7. Applied rewrites26.1%

        \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
      8. Taylor expanded in i around 0

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

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

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
        4. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        5. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        7. unpow2N/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
        9. associate-*r/N/A

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
        10. metadata-evalN/A

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

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
        12. lower-/.f6470.5

          \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
      10. Applied rewrites70.5%

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

      if 44 < n

      1. Initial program 23.1%

        \[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.f6493.4

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

        \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n} \]
      6. Step-by-step derivation
        1. Applied rewrites93.4%

          \[\leadsto \frac{\mathsf{expm1}\left(i\right)}{i} \cdot \color{blue}{\left(n \cdot 100\right)} \]
      7. Recombined 3 regimes into one program.
      8. Final simplification84.7%

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

      Alternative 9: 83.2% accurate, 1.1× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{\mathsf{expm1}\left(i\right)}{i}\\ \mathbf{if}\;n \leq -10200000:\\ \;\;\;\;\left(t\_0 \cdot 100\right) \cdot n\\ \mathbf{elif}\;n \leq 44:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(100 \cdot n\right) \cdot t\_0\\ \end{array} \end{array} \]
      (FPCore (i n)
       :precision binary64
       (let* ((t_0 (/ (expm1 i) i)))
         (if (<= n -10200000.0)
           (* (* t_0 100.0) n)
           (if (<= n 44.0)
             (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.0 n)))
             (* (* 100.0 n) t_0)))))
      double code(double i, double n) {
      	double t_0 = expm1(i) / i;
      	double tmp;
      	if (n <= -10200000.0) {
      		tmp = (t_0 * 100.0) * n;
      	} else if (n <= 44.0) {
      		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.0 / n));
      	} else {
      		tmp = (100.0 * n) * t_0;
      	}
      	return tmp;
      }
      
      function code(i, n)
      	t_0 = Float64(expm1(i) / i)
      	tmp = 0.0
      	if (n <= -10200000.0)
      		tmp = Float64(Float64(t_0 * 100.0) * n);
      	elseif (n <= 44.0)
      		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.0 / n)));
      	else
      		tmp = Float64(Float64(100.0 * n) * t_0);
      	end
      	return tmp
      end
      
      code[i_, n_] := Block[{t$95$0 = N[(N[(Exp[i] - 1), $MachinePrecision] / i), $MachinePrecision]}, If[LessEqual[n, -10200000.0], N[(N[(t$95$0 * 100.0), $MachinePrecision] * n), $MachinePrecision], If[LessEqual[n, 44.0], N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(100.0 * n), $MachinePrecision] * t$95$0), $MachinePrecision]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \frac{\mathsf{expm1}\left(i\right)}{i}\\
      \mathbf{if}\;n \leq -10200000:\\
      \;\;\;\;\left(t\_0 \cdot 100\right) \cdot n\\
      
      \mathbf{elif}\;n \leq 44:\\
      \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\
      
      \mathbf{else}:\\
      \;\;\;\;\left(100 \cdot n\right) \cdot t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if n < -1.02e7

        1. Initial program 19.9%

          \[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.f6492.6

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

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

        if -1.02e7 < n < 44

        1. Initial program 27.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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
        4. Step-by-step derivation
          1. lower-+.f6426.1

            \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
        5. Applied rewrites26.1%

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

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

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

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

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

            \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
          6. lower-/.f6426.1

            \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
        7. Applied rewrites26.1%

          \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
        8. Taylor expanded in i around 0

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

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

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

            \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
          4. associate-*r/N/A

            \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
          5. metadata-evalN/A

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

            \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
          7. unpow2N/A

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

            \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
          9. associate-*r/N/A

            \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
          10. metadata-evalN/A

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

            \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
          12. lower-/.f6470.5

            \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
        10. Applied rewrites70.5%

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

        if 44 < n

        1. Initial program 23.1%

          \[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.f6493.4

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

          \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n} \]
        6. Step-by-step derivation
          1. Applied rewrites93.4%

            \[\leadsto \frac{\mathsf{expm1}\left(i\right)}{i} \cdot \color{blue}{\left(n \cdot 100\right)} \]
        7. Recombined 3 regimes into one program.
        8. Final simplification84.7%

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

        Alternative 10: 83.2% 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 -10200000:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;n \leq 44:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
        (FPCore (i n)
         :precision binary64
         (let* ((t_0 (* (* (/ (expm1 i) i) 100.0) n)))
           (if (<= n -10200000.0)
             t_0
             (if (<= n 44.0)
               (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.0 n)))
               t_0))))
        double code(double i, double n) {
        	double t_0 = ((expm1(i) / i) * 100.0) * n;
        	double tmp;
        	if (n <= -10200000.0) {
        		tmp = t_0;
        	} else if (n <= 44.0) {
        		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.0 / n));
        	} 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 <= -10200000.0)
        		tmp = t_0;
        	elseif (n <= 44.0)
        		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.0 / n)));
        	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, -10200000.0], t$95$0, If[LessEqual[n, 44.0], N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 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 -10200000:\\
        \;\;\;\;t\_0\\
        
        \mathbf{elif}\;n \leq 44:\\
        \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\
        
        \mathbf{else}:\\
        \;\;\;\;t\_0\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if n < -1.02e7 or 44 < n

          1. Initial program 21.7%

            \[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.f6493.1

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

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

          if -1.02e7 < n < 44

          1. Initial program 27.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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
          4. Step-by-step derivation
            1. lower-+.f6426.1

              \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
          5. Applied rewrites26.1%

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

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

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

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

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

              \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
            6. lower-/.f6426.1

              \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
          7. Applied rewrites26.1%

            \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
          8. Taylor expanded in i around 0

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

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

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

              \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
            4. associate-*r/N/A

              \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
            5. metadata-evalN/A

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

              \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
            7. unpow2N/A

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

              \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
            9. associate-*r/N/A

              \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
            10. metadata-evalN/A

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

              \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
            12. lower-/.f6470.5

              \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
          10. Applied rewrites70.5%

            \[\leadsto \frac{100}{\color{blue}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}} \]
        3. Recombined 2 regimes into one program.
        4. Add Preprocessing

        Alternative 11: 72.1% accurate, 2.1× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -3.3 \cdot 10^{+138}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(16.666666666666668, i, 50\right), i, 100\right) \cdot n\\ \mathbf{elif}\;n \leq 44:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.041666666666666664, i, 0.16666666666666666\right), i, 0.5\right), i, 1\right) \cdot i}{i} \cdot \left(100 \cdot n\right)\\ \end{array} \end{array} \]
        (FPCore (i n)
         :precision binary64
         (if (<= n -3.3e+138)
           (* (fma (fma 16.666666666666668 i 50.0) i 100.0) n)
           (if (<= n 44.0)
             (/ 100.0 (fma (- (/ 0.5 (* n n)) (/ 0.5 n)) i (/ 1.0 n)))
             (*
              (/
               (*
                (fma
                 (fma (fma 0.041666666666666664 i 0.16666666666666666) i 0.5)
                 i
                 1.0)
                i)
               i)
              (* 100.0 n)))))
        double code(double i, double n) {
        	double tmp;
        	if (n <= -3.3e+138) {
        		tmp = fma(fma(16.666666666666668, i, 50.0), i, 100.0) * n;
        	} else if (n <= 44.0) {
        		tmp = 100.0 / fma(((0.5 / (n * n)) - (0.5 / n)), i, (1.0 / n));
        	} else {
        		tmp = ((fma(fma(fma(0.041666666666666664, i, 0.16666666666666666), i, 0.5), i, 1.0) * i) / i) * (100.0 * n);
        	}
        	return tmp;
        }
        
        function code(i, n)
        	tmp = 0.0
        	if (n <= -3.3e+138)
        		tmp = Float64(fma(fma(16.666666666666668, i, 50.0), i, 100.0) * n);
        	elseif (n <= 44.0)
        		tmp = Float64(100.0 / fma(Float64(Float64(0.5 / Float64(n * n)) - Float64(0.5 / n)), i, Float64(1.0 / n)));
        	else
        		tmp = Float64(Float64(Float64(fma(fma(fma(0.041666666666666664, i, 0.16666666666666666), i, 0.5), i, 1.0) * i) / i) * Float64(100.0 * n));
        	end
        	return tmp
        end
        
        code[i_, n_] := If[LessEqual[n, -3.3e+138], N[(N[(N[(16.666666666666668 * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision], If[LessEqual[n, 44.0], N[(100.0 / N[(N[(N[(0.5 / N[(n * n), $MachinePrecision]), $MachinePrecision] - N[(0.5 / n), $MachinePrecision]), $MachinePrecision] * i + N[(1.0 / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(N[(N[(0.041666666666666664 * i + 0.16666666666666666), $MachinePrecision] * i + 0.5), $MachinePrecision] * i + 1.0), $MachinePrecision] * i), $MachinePrecision] / i), $MachinePrecision] * N[(100.0 * n), $MachinePrecision]), $MachinePrecision]]]
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        \mathbf{if}\;n \leq -3.3 \cdot 10^{+138}:\\
        \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(16.666666666666668, i, 50\right), i, 100\right) \cdot n\\
        
        \mathbf{elif}\;n \leq 44:\\
        \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\
        
        \mathbf{else}:\\
        \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.041666666666666664, i, 0.16666666666666666\right), i, 0.5\right), i, 1\right) \cdot i}{i} \cdot \left(100 \cdot n\right)\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 3 regimes
        2. if n < -3.29999999999999978e138

          1. Initial program 11.8%

            \[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.f6495.6

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

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

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

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

            if -3.29999999999999978e138 < n < 44

            1. Initial program 28.8%

              \[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 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
            4. Step-by-step derivation
              1. lower-+.f6422.5

                \[\leadsto 100 \cdot \frac{\color{blue}{\left(1 + i\right)} - 1}{\frac{i}{n}} \]
            5. Applied rewrites22.5%

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

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

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

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

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

                \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
              6. lower-/.f6422.5

                \[\leadsto \frac{100}{\color{blue}{\frac{\frac{i}{n}}{\left(1 + i\right) - 1}}} \]
            7. Applied rewrites22.5%

              \[\leadsto \color{blue}{\frac{100}{\frac{\frac{i}{n}}{\left(i + 1\right) - 1}}} \]
            8. Taylor expanded in i around 0

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

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

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

                \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{1}{2} \cdot \frac{1}{{n}^{2}} - \frac{1}{2} \cdot \frac{1}{n}}, i, \frac{1}{n}\right)} \]
              4. associate-*r/N/A

                \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2} \cdot 1}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
              5. metadata-evalN/A

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

                \[\leadsto \frac{100}{\mathsf{fma}\left(\color{blue}{\frac{\frac{1}{2}}{{n}^{2}}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
              7. unpow2N/A

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

                \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{\color{blue}{n \cdot n}} - \frac{1}{2} \cdot \frac{1}{n}, i, \frac{1}{n}\right)} \]
              9. associate-*r/N/A

                \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2} \cdot 1}{n}}, i, \frac{1}{n}\right)} \]
              10. metadata-evalN/A

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

                \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{\frac{1}{2}}{n \cdot n} - \color{blue}{\frac{\frac{1}{2}}{n}}, i, \frac{1}{n}\right)} \]
              12. lower-/.f6469.7

                \[\leadsto \frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \color{blue}{\frac{1}{n}}\right)} \]
            10. Applied rewrites69.7%

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

            if 44 < n

            1. Initial program 23.1%

              \[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.f6493.4

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

              \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n} \]
            6. Step-by-step derivation
              1. Applied rewrites93.4%

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

                \[\leadsto \frac{i \cdot \left(1 + i \cdot \left(\frac{1}{2} + i \cdot \left(\frac{1}{6} + \frac{1}{24} \cdot i\right)\right)\right)}{i} \cdot \left(n \cdot 100\right) \]
              3. Step-by-step derivation
                1. Applied rewrites83.8%

                  \[\leadsto \frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.041666666666666664, i, 0.16666666666666666\right), i, 0.5\right), i, 1\right) \cdot i}{i} \cdot \left(n \cdot 100\right) \]
              4. Recombined 3 regimes into one program.
              5. Final simplification76.1%

                \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -3.3 \cdot 10^{+138}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(16.666666666666668, i, 50\right), i, 100\right) \cdot n\\ \mathbf{elif}\;n \leq 44:\\ \;\;\;\;\frac{100}{\mathsf{fma}\left(\frac{0.5}{n \cdot n} - \frac{0.5}{n}, i, \frac{1}{n}\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.041666666666666664, i, 0.16666666666666666\right), i, 0.5\right), i, 1\right) \cdot i}{i} \cdot \left(100 \cdot n\right)\\ \end{array} \]
              6. Add Preprocessing

              Alternative 12: 66.3% accurate, 2.6× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\ \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\ \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\ \;\;\;\;\frac{1 - 1}{\frac{i}{n}} \cdot 100\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.041666666666666664, i, 0.16666666666666666\right), i, 0.5\right), i, 1\right) \cdot i}{i} \cdot \left(100 \cdot n\right)\\ \end{array} \end{array} \]
              (FPCore (i n)
               :precision binary64
               (if (<= n -3.7e-150)
                 (* (fma (* n i) (fma 0.16666666666666666 i 0.5) n) 100.0)
                 (if (<= n 1.5e-213)
                   (* (/ (- 1.0 1.0) (/ i n)) 100.0)
                   (*
                    (/
                     (*
                      (fma
                       (fma (fma 0.041666666666666664 i 0.16666666666666666) i 0.5)
                       i
                       1.0)
                      i)
                     i)
                    (* 100.0 n)))))
              double code(double i, double n) {
              	double tmp;
              	if (n <= -3.7e-150) {
              		tmp = fma((n * i), fma(0.16666666666666666, i, 0.5), n) * 100.0;
              	} else if (n <= 1.5e-213) {
              		tmp = ((1.0 - 1.0) / (i / n)) * 100.0;
              	} else {
              		tmp = ((fma(fma(fma(0.041666666666666664, i, 0.16666666666666666), i, 0.5), i, 1.0) * i) / i) * (100.0 * n);
              	}
              	return tmp;
              }
              
              function code(i, n)
              	tmp = 0.0
              	if (n <= -3.7e-150)
              		tmp = Float64(fma(Float64(n * i), fma(0.16666666666666666, i, 0.5), n) * 100.0);
              	elseif (n <= 1.5e-213)
              		tmp = Float64(Float64(Float64(1.0 - 1.0) / Float64(i / n)) * 100.0);
              	else
              		tmp = Float64(Float64(Float64(fma(fma(fma(0.041666666666666664, i, 0.16666666666666666), i, 0.5), i, 1.0) * i) / i) * Float64(100.0 * n));
              	end
              	return tmp
              end
              
              code[i_, n_] := If[LessEqual[n, -3.7e-150], N[(N[(N[(n * i), $MachinePrecision] * N[(0.16666666666666666 * i + 0.5), $MachinePrecision] + n), $MachinePrecision] * 100.0), $MachinePrecision], If[LessEqual[n, 1.5e-213], N[(N[(N[(1.0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision] * 100.0), $MachinePrecision], N[(N[(N[(N[(N[(N[(0.041666666666666664 * i + 0.16666666666666666), $MachinePrecision] * i + 0.5), $MachinePrecision] * i + 1.0), $MachinePrecision] * i), $MachinePrecision] / i), $MachinePrecision] * N[(100.0 * n), $MachinePrecision]), $MachinePrecision]]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\
              \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\
              
              \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\
              \;\;\;\;\frac{1 - 1}{\frac{i}{n}} \cdot 100\\
              
              \mathbf{else}:\\
              \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.041666666666666664, i, 0.16666666666666666\right), i, 0.5\right), i, 1\right) \cdot i}{i} \cdot \left(100 \cdot n\right)\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 3 regimes
              2. if n < -3.70000000000000001e-150

                1. Initial program 18.4%

                  \[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 100 \cdot \color{blue}{\left(n + i \cdot \left(i \cdot \left(n \cdot \left(\left(\frac{1}{6} + \frac{1}{3} \cdot \frac{1}{{n}^{2}}\right) - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n \cdot \left(\frac{1}{2} - \frac{1}{2} \cdot \frac{1}{n}\right)\right)\right)} \]
                4. Step-by-step derivation
                  1. +-commutativeN/A

                    \[\leadsto 100 \cdot \color{blue}{\left(i \cdot \left(i \cdot \left(n \cdot \left(\left(\frac{1}{6} + \frac{1}{3} \cdot \frac{1}{{n}^{2}}\right) - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n \cdot \left(\frac{1}{2} - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n\right)} \]
                5. Applied rewrites72.3%

                  \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(\left(\frac{0.3333333333333333}{n \cdot n} + 0.16666666666666666\right) - \frac{0.5}{n}, i, 0.5 - \frac{0.5}{n}\right), n\right)} \]
                6. Taylor expanded in n around inf

                  \[\leadsto 100 \cdot \mathsf{fma}\left(n \cdot i, \frac{1}{2} + \color{blue}{\frac{1}{6} \cdot i}, n\right) \]
                7. Step-by-step derivation
                  1. Applied rewrites72.2%

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

                  if -3.70000000000000001e-150 < n < 1.49999999999999993e-213

                  1. Initial program 59.3%

                    \[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 100 \cdot \frac{\color{blue}{1} - 1}{\frac{i}{n}} \]
                  4. Step-by-step derivation
                    1. Applied rewrites66.7%

                      \[\leadsto 100 \cdot \frac{\color{blue}{1} - 1}{\frac{i}{n}} \]

                    if 1.49999999999999993e-213 < 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.f6483.4

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

                      \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n} \]
                    6. Step-by-step derivation
                      1. Applied rewrites83.4%

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

                        \[\leadsto \frac{i \cdot \left(1 + i \cdot \left(\frac{1}{2} + i \cdot \left(\frac{1}{6} + \frac{1}{24} \cdot i\right)\right)\right)}{i} \cdot \left(n \cdot 100\right) \]
                      3. Step-by-step derivation
                        1. Applied rewrites76.7%

                          \[\leadsto \frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.041666666666666664, i, 0.16666666666666666\right), i, 0.5\right), i, 1\right) \cdot i}{i} \cdot \left(n \cdot 100\right) \]
                      4. Recombined 3 regimes into one program.
                      5. Final simplification73.9%

                        \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\ \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\ \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\ \;\;\;\;\frac{1 - 1}{\frac{i}{n}} \cdot 100\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(0.041666666666666664, i, 0.16666666666666666\right), i, 0.5\right), i, 1\right) \cdot i}{i} \cdot \left(100 \cdot n\right)\\ \end{array} \]
                      6. Add Preprocessing

                      Alternative 13: 66.1% accurate, 3.4× speedup?

                      \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\ \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\ \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\ \;\;\;\;\frac{1 - 1}{\frac{i}{n}} \cdot 100\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \end{array} \end{array} \]
                      (FPCore (i n)
                       :precision binary64
                       (if (<= n -3.7e-150)
                         (* (fma (* n i) (fma 0.16666666666666666 i 0.5) n) 100.0)
                         (if (<= n 1.5e-213)
                           (* (/ (- 1.0 1.0) (/ i n)) 100.0)
                           (*
                            (fma (fma (fma 4.166666666666667 i 16.666666666666668) i 50.0) i 100.0)
                            n))))
                      double code(double i, double n) {
                      	double tmp;
                      	if (n <= -3.7e-150) {
                      		tmp = fma((n * i), fma(0.16666666666666666, i, 0.5), n) * 100.0;
                      	} else if (n <= 1.5e-213) {
                      		tmp = ((1.0 - 1.0) / (i / n)) * 100.0;
                      	} else {
                      		tmp = fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n;
                      	}
                      	return tmp;
                      }
                      
                      function code(i, n)
                      	tmp = 0.0
                      	if (n <= -3.7e-150)
                      		tmp = Float64(fma(Float64(n * i), fma(0.16666666666666666, i, 0.5), n) * 100.0);
                      	elseif (n <= 1.5e-213)
                      		tmp = Float64(Float64(Float64(1.0 - 1.0) / Float64(i / n)) * 100.0);
                      	else
                      		tmp = Float64(fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n);
                      	end
                      	return tmp
                      end
                      
                      code[i_, n_] := If[LessEqual[n, -3.7e-150], N[(N[(N[(n * i), $MachinePrecision] * N[(0.16666666666666666 * i + 0.5), $MachinePrecision] + n), $MachinePrecision] * 100.0), $MachinePrecision], If[LessEqual[n, 1.5e-213], N[(N[(N[(1.0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision] * 100.0), $MachinePrecision], N[(N[(N[(N[(4.166666666666667 * i + 16.666666666666668), $MachinePrecision] * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision]]]
                      
                      \begin{array}{l}
                      
                      \\
                      \begin{array}{l}
                      \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\
                      \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\
                      
                      \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\
                      \;\;\;\;\frac{1 - 1}{\frac{i}{n}} \cdot 100\\
                      
                      \mathbf{else}:\\
                      \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\
                      
                      
                      \end{array}
                      \end{array}
                      
                      Derivation
                      1. Split input into 3 regimes
                      2. if n < -3.70000000000000001e-150

                        1. Initial program 18.4%

                          \[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 100 \cdot \color{blue}{\left(n + i \cdot \left(i \cdot \left(n \cdot \left(\left(\frac{1}{6} + \frac{1}{3} \cdot \frac{1}{{n}^{2}}\right) - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n \cdot \left(\frac{1}{2} - \frac{1}{2} \cdot \frac{1}{n}\right)\right)\right)} \]
                        4. Step-by-step derivation
                          1. +-commutativeN/A

                            \[\leadsto 100 \cdot \color{blue}{\left(i \cdot \left(i \cdot \left(n \cdot \left(\left(\frac{1}{6} + \frac{1}{3} \cdot \frac{1}{{n}^{2}}\right) - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n \cdot \left(\frac{1}{2} - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n\right)} \]
                        5. Applied rewrites72.3%

                          \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(\left(\frac{0.3333333333333333}{n \cdot n} + 0.16666666666666666\right) - \frac{0.5}{n}, i, 0.5 - \frac{0.5}{n}\right), n\right)} \]
                        6. Taylor expanded in n around inf

                          \[\leadsto 100 \cdot \mathsf{fma}\left(n \cdot i, \frac{1}{2} + \color{blue}{\frac{1}{6} \cdot i}, n\right) \]
                        7. Step-by-step derivation
                          1. Applied rewrites72.2%

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

                          if -3.70000000000000001e-150 < n < 1.49999999999999993e-213

                          1. Initial program 59.3%

                            \[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 100 \cdot \frac{\color{blue}{1} - 1}{\frac{i}{n}} \]
                          4. Step-by-step derivation
                            1. Applied rewrites66.7%

                              \[\leadsto 100 \cdot \frac{\color{blue}{1} - 1}{\frac{i}{n}} \]

                            if 1.49999999999999993e-213 < 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.f6483.4

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

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

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

                                \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n \]
                            8. Recombined 3 regimes into one program.
                            9. Final simplification73.6%

                              \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\ \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\ \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\ \;\;\;\;\frac{1 - 1}{\frac{i}{n}} \cdot 100\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \end{array} \]
                            10. Add Preprocessing

                            Alternative 14: 66.1% accurate, 4.1× speedup?

                            \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\ \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\ \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\ \;\;\;\;\frac{0}{i}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \end{array} \end{array} \]
                            (FPCore (i n)
                             :precision binary64
                             (if (<= n -3.7e-150)
                               (* (fma (* n i) (fma 0.16666666666666666 i 0.5) n) 100.0)
                               (if (<= n 1.5e-213)
                                 (/ 0.0 i)
                                 (*
                                  (fma (fma (fma 4.166666666666667 i 16.666666666666668) i 50.0) i 100.0)
                                  n))))
                            double code(double i, double n) {
                            	double tmp;
                            	if (n <= -3.7e-150) {
                            		tmp = fma((n * i), fma(0.16666666666666666, i, 0.5), n) * 100.0;
                            	} else if (n <= 1.5e-213) {
                            		tmp = 0.0 / i;
                            	} else {
                            		tmp = fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n;
                            	}
                            	return tmp;
                            }
                            
                            function code(i, n)
                            	tmp = 0.0
                            	if (n <= -3.7e-150)
                            		tmp = Float64(fma(Float64(n * i), fma(0.16666666666666666, i, 0.5), n) * 100.0);
                            	elseif (n <= 1.5e-213)
                            		tmp = Float64(0.0 / i);
                            	else
                            		tmp = Float64(fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n);
                            	end
                            	return tmp
                            end
                            
                            code[i_, n_] := If[LessEqual[n, -3.7e-150], N[(N[(N[(n * i), $MachinePrecision] * N[(0.16666666666666666 * i + 0.5), $MachinePrecision] + n), $MachinePrecision] * 100.0), $MachinePrecision], If[LessEqual[n, 1.5e-213], N[(0.0 / i), $MachinePrecision], N[(N[(N[(N[(4.166666666666667 * i + 16.666666666666668), $MachinePrecision] * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision]]]
                            
                            \begin{array}{l}
                            
                            \\
                            \begin{array}{l}
                            \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\
                            \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\
                            
                            \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\
                            \;\;\;\;\frac{0}{i}\\
                            
                            \mathbf{else}:\\
                            \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\
                            
                            
                            \end{array}
                            \end{array}
                            
                            Derivation
                            1. Split input into 3 regimes
                            2. if n < -3.70000000000000001e-150

                              1. Initial program 18.4%

                                \[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 100 \cdot \color{blue}{\left(n + i \cdot \left(i \cdot \left(n \cdot \left(\left(\frac{1}{6} + \frac{1}{3} \cdot \frac{1}{{n}^{2}}\right) - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n \cdot \left(\frac{1}{2} - \frac{1}{2} \cdot \frac{1}{n}\right)\right)\right)} \]
                              4. Step-by-step derivation
                                1. +-commutativeN/A

                                  \[\leadsto 100 \cdot \color{blue}{\left(i \cdot \left(i \cdot \left(n \cdot \left(\left(\frac{1}{6} + \frac{1}{3} \cdot \frac{1}{{n}^{2}}\right) - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n \cdot \left(\frac{1}{2} - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n\right)} \]
                              5. Applied rewrites72.3%

                                \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(\left(\frac{0.3333333333333333}{n \cdot n} + 0.16666666666666666\right) - \frac{0.5}{n}, i, 0.5 - \frac{0.5}{n}\right), n\right)} \]
                              6. Taylor expanded in n around inf

                                \[\leadsto 100 \cdot \mathsf{fma}\left(n \cdot i, \frac{1}{2} + \color{blue}{\frac{1}{6} \cdot i}, n\right) \]
                              7. Step-by-step derivation
                                1. Applied rewrites72.2%

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

                                if -3.70000000000000001e-150 < n < 1.49999999999999993e-213

                                1. Initial program 59.3%

                                  \[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. lift--.f64N/A

                                    \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
                                  4. 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)} \]
                                  5. 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) \]
                                  6. clear-numN/A

                                    \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
                                  7. 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)} \]
                                  8. distribute-rgt-inN/A

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

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

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

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

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

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

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

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

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

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

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

                                  \[\leadsto \color{blue}{\frac{-100 \cdot n + 100 \cdot n}{i}} \]
                                6. Step-by-step derivation
                                  1. distribute-rgt-outN/A

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

                                    \[\leadsto \frac{n \cdot \color{blue}{0}}{i} \]
                                  3. mul0-rgtN/A

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

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

                                  \[\leadsto \color{blue}{\frac{0}{i}} \]

                                if 1.49999999999999993e-213 < 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.f6483.4

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

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

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

                                    \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n \]
                                8. Recombined 3 regimes into one program.
                                9. Final simplification73.6%

                                  \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\ \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\ \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\ \;\;\;\;\frac{0}{i}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \end{array} \]
                                10. Add Preprocessing

                                Alternative 15: 64.5% accurate, 4.2× speedup?

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

                                  1. Initial program 19.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 100 \cdot \color{blue}{\left(n + i \cdot \left(i \cdot \left(n \cdot \left(\left(\frac{1}{6} + \frac{1}{3} \cdot \frac{1}{{n}^{2}}\right) - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n \cdot \left(\frac{1}{2} - \frac{1}{2} \cdot \frac{1}{n}\right)\right)\right)} \]
                                  4. Step-by-step derivation
                                    1. +-commutativeN/A

                                      \[\leadsto 100 \cdot \color{blue}{\left(i \cdot \left(i \cdot \left(n \cdot \left(\left(\frac{1}{6} + \frac{1}{3} \cdot \frac{1}{{n}^{2}}\right) - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n \cdot \left(\frac{1}{2} - \frac{1}{2} \cdot \frac{1}{n}\right)\right) + n\right)} \]
                                  5. Applied rewrites69.9%

                                    \[\leadsto 100 \cdot \color{blue}{\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(\left(\frac{0.3333333333333333}{n \cdot n} + 0.16666666666666666\right) - \frac{0.5}{n}, i, 0.5 - \frac{0.5}{n}\right), n\right)} \]
                                  6. Taylor expanded in n around inf

                                    \[\leadsto 100 \cdot \mathsf{fma}\left(n \cdot i, \frac{1}{2} + \color{blue}{\frac{1}{6} \cdot i}, n\right) \]
                                  7. Step-by-step derivation
                                    1. Applied rewrites72.0%

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

                                    if -3.70000000000000001e-150 < n < 1.49999999999999993e-213

                                    1. Initial program 59.3%

                                      \[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. lift--.f64N/A

                                        \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
                                      4. 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)} \]
                                      5. 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) \]
                                      6. clear-numN/A

                                        \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
                                      7. 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)} \]
                                      8. distribute-rgt-inN/A

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

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

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

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

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

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

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

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

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

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

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

                                      \[\leadsto \color{blue}{\frac{-100 \cdot n + 100 \cdot n}{i}} \]
                                    6. Step-by-step derivation
                                      1. distribute-rgt-outN/A

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

                                        \[\leadsto \frac{n \cdot \color{blue}{0}}{i} \]
                                      3. mul0-rgtN/A

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

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

                                      \[\leadsto \color{blue}{\frac{0}{i}} \]
                                  8. Recombined 2 regimes into one program.
                                  9. Final simplification71.5%

                                    \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\ \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\ \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\ \;\;\;\;\frac{0}{i}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(n \cdot i, \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \cdot 100\\ \end{array} \]
                                  10. Add Preprocessing

                                  Alternative 16: 64.5% 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 -3.7 \cdot 10^{-150}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\ \;\;\;\;\frac{0}{i}\\ \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 -3.7e-150) t_0 (if (<= n 1.5e-213) (/ 0.0 i) 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 <= -3.7e-150) {
                                  		tmp = t_0;
                                  	} else if (n <= 1.5e-213) {
                                  		tmp = 0.0 / i;
                                  	} 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 <= -3.7e-150)
                                  		tmp = t_0;
                                  	elseif (n <= 1.5e-213)
                                  		tmp = Float64(0.0 / i);
                                  	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, -3.7e-150], t$95$0, If[LessEqual[n, 1.5e-213], N[(0.0 / i), $MachinePrecision], 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 -3.7 \cdot 10^{-150}:\\
                                  \;\;\;\;t\_0\\
                                  
                                  \mathbf{elif}\;n \leq 1.5 \cdot 10^{-213}:\\
                                  \;\;\;\;\frac{0}{i}\\
                                  
                                  \mathbf{else}:\\
                                  \;\;\;\;t\_0\\
                                  
                                  
                                  \end{array}
                                  \end{array}
                                  
                                  Derivation
                                  1. Split input into 2 regimes
                                  2. if n < -3.70000000000000001e-150 or 1.49999999999999993e-213 < n

                                    1. Initial program 19.5%

                                      \[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.f6485.9

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

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

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

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

                                      if -3.70000000000000001e-150 < n < 1.49999999999999993e-213

                                      1. Initial program 59.3%

                                        \[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. lift--.f64N/A

                                          \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
                                        4. 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)} \]
                                        5. 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) \]
                                        6. clear-numN/A

                                          \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
                                        7. 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)} \]
                                        8. distribute-rgt-inN/A

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

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

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

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

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

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

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

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

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

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

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

                                        \[\leadsto \color{blue}{\frac{-100 \cdot n + 100 \cdot n}{i}} \]
                                      6. Step-by-step derivation
                                        1. distribute-rgt-outN/A

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

                                          \[\leadsto \frac{n \cdot \color{blue}{0}}{i} \]
                                        3. mul0-rgtN/A

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

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

                                        \[\leadsto \color{blue}{\frac{0}{i}} \]
                                    8. Recombined 2 regimes into one program.
                                    9. Add Preprocessing

                                    Alternative 17: 62.1% accurate, 5.0× speedup?

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

                                      1. Initial program 19.5%

                                        \[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.f6485.9

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

                                        \[\leadsto \color{blue}{\left(\frac{\mathsf{expm1}\left(i\right)}{i} \cdot 100\right) \cdot n} \]
                                      6. Step-by-step derivation
                                        1. Applied rewrites85.9%

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

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

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

                                          if -3.70000000000000001e-150 < n < 2.8e-217

                                          1. Initial program 59.3%

                                            \[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. lift--.f64N/A

                                              \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
                                            4. 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)} \]
                                            5. 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) \]
                                            6. clear-numN/A

                                              \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
                                            7. 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)} \]
                                            8. distribute-rgt-inN/A

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

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

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

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

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

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

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

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

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

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

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

                                            \[\leadsto \color{blue}{\frac{-100 \cdot n + 100 \cdot n}{i}} \]
                                          6. Step-by-step derivation
                                            1. distribute-rgt-outN/A

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

                                              \[\leadsto \frac{n \cdot \color{blue}{0}}{i} \]
                                            3. mul0-rgtN/A

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

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

                                            \[\leadsto \color{blue}{\frac{0}{i}} \]
                                        4. Recombined 2 regimes into one program.
                                        5. Final simplification68.5%

                                          \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\ \;\;\;\;\mathsf{fma}\left(0.5, i, 1\right) \cdot \left(100 \cdot n\right)\\ \mathbf{elif}\;n \leq 2.8 \cdot 10^{-217}:\\ \;\;\;\;\frac{0}{i}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(0.5, i, 1\right) \cdot \left(100 \cdot n\right)\\ \end{array} \]
                                        6. Add Preprocessing

                                        Alternative 18: 62.1% 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 -3.7 \cdot 10^{-150}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;n \leq 2.8 \cdot 10^{-217}:\\ \;\;\;\;\frac{0}{i}\\ \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 -3.7e-150) t_0 (if (<= n 2.8e-217) (/ 0.0 i) t_0))))
                                        double code(double i, double n) {
                                        	double t_0 = fma(50.0, i, 100.0) * n;
                                        	double tmp;
                                        	if (n <= -3.7e-150) {
                                        		tmp = t_0;
                                        	} else if (n <= 2.8e-217) {
                                        		tmp = 0.0 / i;
                                        	} 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 <= -3.7e-150)
                                        		tmp = t_0;
                                        	elseif (n <= 2.8e-217)
                                        		tmp = Float64(0.0 / i);
                                        	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, -3.7e-150], t$95$0, If[LessEqual[n, 2.8e-217], N[(0.0 / i), $MachinePrecision], t$95$0]]]
                                        
                                        \begin{array}{l}
                                        
                                        \\
                                        \begin{array}{l}
                                        t_0 := \mathsf{fma}\left(50, i, 100\right) \cdot n\\
                                        \mathbf{if}\;n \leq -3.7 \cdot 10^{-150}:\\
                                        \;\;\;\;t\_0\\
                                        
                                        \mathbf{elif}\;n \leq 2.8 \cdot 10^{-217}:\\
                                        \;\;\;\;\frac{0}{i}\\
                                        
                                        \mathbf{else}:\\
                                        \;\;\;\;t\_0\\
                                        
                                        
                                        \end{array}
                                        \end{array}
                                        
                                        Derivation
                                        1. Split input into 2 regimes
                                        2. if n < -3.70000000000000001e-150 or 2.8e-217 < n

                                          1. Initial program 19.5%

                                            \[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.f6485.9

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

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

                                            \[\leadsto \left(100 + 50 \cdot i\right) \cdot n \]
                                          7. Step-by-step derivation
                                            1. Applied rewrites68.7%

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

                                            if -3.70000000000000001e-150 < n < 2.8e-217

                                            1. Initial program 59.3%

                                              \[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. lift--.f64N/A

                                                \[\leadsto 100 \cdot \frac{\color{blue}{{\left(1 + \frac{i}{n}\right)}^{n} - 1}}{\frac{i}{n}} \]
                                              4. 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)} \]
                                              5. 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) \]
                                              6. clear-numN/A

                                                \[\leadsto 100 \cdot \left(\frac{{\left(1 + \frac{i}{n}\right)}^{n}}{\frac{i}{n}} - \color{blue}{\frac{n}{i}}\right) \]
                                              7. 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)} \]
                                              8. distribute-rgt-inN/A

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

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

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

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

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

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

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

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

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

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

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

                                              \[\leadsto \color{blue}{\frac{-100 \cdot n + 100 \cdot n}{i}} \]
                                            6. Step-by-step derivation
                                              1. distribute-rgt-outN/A

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

                                                \[\leadsto \frac{n \cdot \color{blue}{0}}{i} \]
                                              3. mul0-rgtN/A

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

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

                                              \[\leadsto \color{blue}{\frac{0}{i}} \]
                                          8. Recombined 2 regimes into one program.
                                          9. Add Preprocessing

                                          Alternative 19: 54.6% accurate, 8.6× speedup?

                                          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;i \leq 6.3 \cdot 10^{+49}:\\ \;\;\;\;100 \cdot n\\ \mathbf{else}:\\ \;\;\;\;\left(50 \cdot i\right) \cdot n\\ \end{array} \end{array} \]
                                          (FPCore (i n)
                                           :precision binary64
                                           (if (<= i 6.3e+49) (* 100.0 n) (* (* 50.0 i) n)))
                                          double code(double i, double n) {
                                          	double tmp;
                                          	if (i <= 6.3e+49) {
                                          		tmp = 100.0 * n;
                                          	} else {
                                          		tmp = (50.0 * i) * n;
                                          	}
                                          	return tmp;
                                          }
                                          
                                          real(8) function code(i, n)
                                              real(8), intent (in) :: i
                                              real(8), intent (in) :: n
                                              real(8) :: tmp
                                              if (i <= 6.3d+49) then
                                                  tmp = 100.0d0 * n
                                              else
                                                  tmp = (50.0d0 * i) * n
                                              end if
                                              code = tmp
                                          end function
                                          
                                          public static double code(double i, double n) {
                                          	double tmp;
                                          	if (i <= 6.3e+49) {
                                          		tmp = 100.0 * n;
                                          	} else {
                                          		tmp = (50.0 * i) * n;
                                          	}
                                          	return tmp;
                                          }
                                          
                                          def code(i, n):
                                          	tmp = 0
                                          	if i <= 6.3e+49:
                                          		tmp = 100.0 * n
                                          	else:
                                          		tmp = (50.0 * i) * n
                                          	return tmp
                                          
                                          function code(i, n)
                                          	tmp = 0.0
                                          	if (i <= 6.3e+49)
                                          		tmp = Float64(100.0 * n);
                                          	else
                                          		tmp = Float64(Float64(50.0 * i) * n);
                                          	end
                                          	return tmp
                                          end
                                          
                                          function tmp_2 = code(i, n)
                                          	tmp = 0.0;
                                          	if (i <= 6.3e+49)
                                          		tmp = 100.0 * n;
                                          	else
                                          		tmp = (50.0 * i) * n;
                                          	end
                                          	tmp_2 = tmp;
                                          end
                                          
                                          code[i_, n_] := If[LessEqual[i, 6.3e+49], N[(100.0 * n), $MachinePrecision], N[(N[(50.0 * i), $MachinePrecision] * n), $MachinePrecision]]
                                          
                                          \begin{array}{l}
                                          
                                          \\
                                          \begin{array}{l}
                                          \mathbf{if}\;i \leq 6.3 \cdot 10^{+49}:\\
                                          \;\;\;\;100 \cdot n\\
                                          
                                          \mathbf{else}:\\
                                          \;\;\;\;\left(50 \cdot i\right) \cdot n\\
                                          
                                          
                                          \end{array}
                                          \end{array}
                                          
                                          Derivation
                                          1. Split input into 2 regimes
                                          2. if i < 6.30000000000000007e49

                                            1. Initial program 18.8%

                                              \[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-*.f6466.9

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

                                              \[\leadsto \color{blue}{100 \cdot n} \]

                                            if 6.30000000000000007e49 < i

                                            1. Initial program 45.1%

                                              \[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.f6463.1

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

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

                                              \[\leadsto \left(100 + 50 \cdot i\right) \cdot n \]
                                            7. Step-by-step derivation
                                              1. Applied rewrites42.4%

                                                \[\leadsto \mathsf{fma}\left(50, i, 100\right) \cdot n \]
                                              2. Taylor expanded in i around inf

                                                \[\leadsto \left(50 \cdot i\right) \cdot n \]
                                              3. Step-by-step derivation
                                                1. Applied rewrites42.4%

                                                  \[\leadsto \left(50 \cdot i\right) \cdot n \]
                                              4. Recombined 2 regimes into one program.
                                              5. Add Preprocessing

                                              Alternative 20: 54.9% accurate, 12.2× speedup?

                                              \[\begin{array}{l} \\ \mathsf{fma}\left(50, i, 100\right) \cdot n \end{array} \]
                                              (FPCore (i n) :precision binary64 (* (fma 50.0 i 100.0) n))
                                              double code(double i, double n) {
                                              	return fma(50.0, i, 100.0) * n;
                                              }
                                              
                                              function code(i, n)
                                              	return Float64(fma(50.0, i, 100.0) * n)
                                              end
                                              
                                              code[i_, n_] := N[(N[(50.0 * i + 100.0), $MachinePrecision] * n), $MachinePrecision]
                                              
                                              \begin{array}{l}
                                              
                                              \\
                                              \mathsf{fma}\left(50, i, 100\right) \cdot n
                                              \end{array}
                                              
                                              Derivation
                                              1. Initial program 23.7%

                                                \[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.f6480.1

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

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

                                                \[\leadsto \left(100 + 50 \cdot i\right) \cdot n \]
                                              7. Step-by-step derivation
                                                1. Applied rewrites63.3%

                                                  \[\leadsto \mathsf{fma}\left(50, i, 100\right) \cdot n \]
                                                2. Add Preprocessing

                                                Alternative 21: 49.4% accurate, 24.3× speedup?

                                                \[\begin{array}{l} \\ 100 \cdot n \end{array} \]
                                                (FPCore (i n) :precision binary64 (* 100.0 n))
                                                double code(double i, double n) {
                                                	return 100.0 * n;
                                                }
                                                
                                                real(8) function code(i, n)
                                                    real(8), intent (in) :: i
                                                    real(8), intent (in) :: n
                                                    code = 100.0d0 * n
                                                end function
                                                
                                                public static double code(double i, double n) {
                                                	return 100.0 * n;
                                                }
                                                
                                                def code(i, n):
                                                	return 100.0 * n
                                                
                                                function code(i, n)
                                                	return Float64(100.0 * n)
                                                end
                                                
                                                function tmp = code(i, n)
                                                	tmp = 100.0 * n;
                                                end
                                                
                                                code[i_, n_] := N[(100.0 * n), $MachinePrecision]
                                                
                                                \begin{array}{l}
                                                
                                                \\
                                                100 \cdot n
                                                \end{array}
                                                
                                                Derivation
                                                1. Initial program 23.7%

                                                  \[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-*.f6455.3

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

                                                  \[\leadsto \color{blue}{100 \cdot n} \]
                                                6. Add Preprocessing

                                                Developer Target 1: 33.9% 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 2024331 
                                                (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))))