Compound Interest

Percentage Accurate: 28.1% → 95.9%
Time: 10.2s
Alternatives: 17
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));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(i, n)
use fmin_fmax_functions
    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 17 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.1% 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));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(i, n)
use fmin_fmax_functions
    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: 95.9% accurate, 0.2× speedup?

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

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

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

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

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


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (*.f64 #s(literal 100 binary64) (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n))) < -2e5 or -0.0 < (*.f64 #s(literal 100 binary64) (/.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 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. lift-pow.f64N/A

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

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

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

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

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

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

        \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
      11. 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}} \]
      12. 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}} \]
      13. 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}} \]
      14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    if -2e5 < (*.f64 #s(literal 100 binary64) (/.f64 (-.f64 (pow.f64 (+.f64 #s(literal 1 binary64) (/.f64 i n)) n) #s(literal 1 binary64)) (/.f64 i n))) < -0.0

    1. Initial program 23.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. lift-pow.f64N/A

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

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

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

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

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

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

        \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
      11. 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}} \]
      12. 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}} \]
      13. 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}} \]
      14. lower-log1p.f64N/A

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

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

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

      \[\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 #s(literal 100 binary64) (/.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 \color{blue}{n} \]
    4. Step-by-step derivation
      1. Applied rewrites89.7%

        \[\leadsto 100 \cdot \color{blue}{n} \]
    5. Recombined 3 regimes into one program.
    6. Add Preprocessing

    Alternative 2: 95.1% accurate, 0.2× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := 100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\ \mathbf{if}\;t\_0 \leq -\infty:\\ \;\;\;\;100 \cdot \left(\frac{{\left(\frac{i}{n}\right)}^{n} - 1}{i} \cdot n\right)\\ \mathbf{elif}\;t\_0 \leq 0:\\ \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i} \cdot n\\ \mathbf{elif}\;t\_0 \leq \infty:\\ \;\;\;\;\frac{\left({\left(\frac{i}{n} + 1\right)}^{n} - 1\right) \cdot 100}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \end{array} \]
    (FPCore (i n)
     :precision binary64
     (let* ((t_0 (* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n)))))
       (if (<= t_0 (- INFINITY))
         (* 100.0 (* (/ (- (pow (/ i n) n) 1.0) i) n))
         (if (<= t_0 0.0)
           (* (/ (* (expm1 (* (log1p (/ i n)) n)) 100.0) i) n)
           (if (<= t_0 INFINITY)
             (* (/ (* (- (pow (+ (/ i n) 1.0) n) 1.0) 100.0) i) n)
             (* 100.0 n))))))
    double code(double i, double n) {
    	double t_0 = 100.0 * ((pow((1.0 + (i / n)), n) - 1.0) / (i / n));
    	double tmp;
    	if (t_0 <= -((double) INFINITY)) {
    		tmp = 100.0 * (((pow((i / n), n) - 1.0) / i) * n);
    	} else if (t_0 <= 0.0) {
    		tmp = ((expm1((log1p((i / n)) * n)) * 100.0) / i) * n;
    	} else if (t_0 <= ((double) INFINITY)) {
    		tmp = (((pow(((i / n) + 1.0), n) - 1.0) * 100.0) / i) * n;
    	} else {
    		tmp = 100.0 * n;
    	}
    	return tmp;
    }
    
    public static double code(double i, double n) {
    	double t_0 = 100.0 * ((Math.pow((1.0 + (i / n)), n) - 1.0) / (i / n));
    	double tmp;
    	if (t_0 <= -Double.POSITIVE_INFINITY) {
    		tmp = 100.0 * (((Math.pow((i / n), n) - 1.0) / i) * n);
    	} else if (t_0 <= 0.0) {
    		tmp = ((Math.expm1((Math.log1p((i / n)) * n)) * 100.0) / i) * n;
    	} else if (t_0 <= Double.POSITIVE_INFINITY) {
    		tmp = (((Math.pow(((i / n) + 1.0), n) - 1.0) * 100.0) / i) * n;
    	} else {
    		tmp = 100.0 * n;
    	}
    	return tmp;
    }
    
    def code(i, n):
    	t_0 = 100.0 * ((math.pow((1.0 + (i / n)), n) - 1.0) / (i / n))
    	tmp = 0
    	if t_0 <= -math.inf:
    		tmp = 100.0 * (((math.pow((i / n), n) - 1.0) / i) * n)
    	elif t_0 <= 0.0:
    		tmp = ((math.expm1((math.log1p((i / n)) * n)) * 100.0) / i) * n
    	elif t_0 <= math.inf:
    		tmp = (((math.pow(((i / n) + 1.0), n) - 1.0) * 100.0) / i) * n
    	else:
    		tmp = 100.0 * n
    	return tmp
    
    function code(i, n)
    	t_0 = Float64(100.0 * Float64(Float64((Float64(1.0 + Float64(i / n)) ^ n) - 1.0) / Float64(i / n)))
    	tmp = 0.0
    	if (t_0 <= Float64(-Inf))
    		tmp = Float64(100.0 * Float64(Float64(Float64((Float64(i / n) ^ n) - 1.0) / i) * n));
    	elseif (t_0 <= 0.0)
    		tmp = Float64(Float64(Float64(expm1(Float64(log1p(Float64(i / n)) * n)) * 100.0) / i) * n);
    	elseif (t_0 <= Inf)
    		tmp = Float64(Float64(Float64(Float64((Float64(Float64(i / n) + 1.0) ^ n) - 1.0) * 100.0) / i) * n);
    	else
    		tmp = Float64(100.0 * n);
    	end
    	return tmp
    end
    
    code[i_, n_] := Block[{t$95$0 = 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]}, If[LessEqual[t$95$0, (-Infinity)], N[(100.0 * N[(N[(N[(N[Power[N[(i / n), $MachinePrecision], n], $MachinePrecision] - 1.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 0.0], N[(N[(N[(N[(Exp[N[(N[Log[1 + N[(i / n), $MachinePrecision]], $MachinePrecision] * n), $MachinePrecision]] - 1), $MachinePrecision] * 100.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(N[(N[(N[(N[Power[N[(N[(i / n), $MachinePrecision] + 1.0), $MachinePrecision], n], $MachinePrecision] - 1.0), $MachinePrecision] * 100.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * n), $MachinePrecision]]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := 100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\
    \mathbf{if}\;t\_0 \leq -\infty:\\
    \;\;\;\;100 \cdot \left(\frac{{\left(\frac{i}{n}\right)}^{n} - 1}{i} \cdot n\right)\\
    
    \mathbf{elif}\;t\_0 \leq 0:\\
    \;\;\;\;\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right) \cdot 100}{i} \cdot n\\
    
    \mathbf{elif}\;t\_0 \leq \infty:\\
    \;\;\;\;\frac{\left({\left(\frac{i}{n} + 1\right)}^{n} - 1\right) \cdot 100}{i} \cdot n\\
    
    \mathbf{else}:\\
    \;\;\;\;100 \cdot n\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 4 regimes
    2. if (*.f64 #s(literal 100 binary64) (/.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 100.0%

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

        \[\leadsto 100 \cdot \frac{{\color{blue}{\left(\frac{i}{n}\right)}}^{n} - 1}{\frac{i}{n}} \]
      4. Step-by-step derivation
        1. lift-/.f64100.0

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

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

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

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

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

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

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

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

      if -inf.0 < (*.f64 #s(literal 100 binary64) (/.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 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. 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. lift-pow.f64N/A

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

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

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

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

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

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

          \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
        11. 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}} \]
        12. 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}} \]
        13. 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}} \]
        14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      if -0.0 < (*.f64 #s(literal 100 binary64) (/.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 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. lift-pow.f64N/A

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

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

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

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

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

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

          \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
        11. 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}} \]
        12. 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}} \]
        13. 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}} \]
        14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      if +inf.0 < (*.f64 #s(literal 100 binary64) (/.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 \color{blue}{n} \]
      4. Step-by-step derivation
        1. Applied rewrites89.7%

          \[\leadsto 100 \cdot \color{blue}{n} \]
      5. Recombined 4 regimes into one program.
      6. Add Preprocessing

      Alternative 3: 95.1% accurate, 0.2× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := 100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\ \mathbf{if}\;t\_0 \leq -\infty:\\ \;\;\;\;100 \cdot \left(\frac{{\left(\frac{i}{n}\right)}^{n} - 1}{i} \cdot n\right)\\ \mathbf{elif}\;t\_0 \leq 0:\\ \;\;\;\;100 \cdot \left(\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i} \cdot n\right)\\ \mathbf{elif}\;t\_0 \leq \infty:\\ \;\;\;\;\frac{\left({\left(\frac{i}{n} + 1\right)}^{n} - 1\right) \cdot 100}{i} \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \end{array} \]
      (FPCore (i n)
       :precision binary64
       (let* ((t_0 (* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n)))))
         (if (<= t_0 (- INFINITY))
           (* 100.0 (* (/ (- (pow (/ i n) n) 1.0) i) n))
           (if (<= t_0 0.0)
             (* 100.0 (* (/ (expm1 (* (log1p (/ i n)) n)) i) n))
             (if (<= t_0 INFINITY)
               (* (/ (* (- (pow (+ (/ i n) 1.0) n) 1.0) 100.0) i) n)
               (* 100.0 n))))))
      double code(double i, double n) {
      	double t_0 = 100.0 * ((pow((1.0 + (i / n)), n) - 1.0) / (i / n));
      	double tmp;
      	if (t_0 <= -((double) INFINITY)) {
      		tmp = 100.0 * (((pow((i / n), n) - 1.0) / i) * n);
      	} else if (t_0 <= 0.0) {
      		tmp = 100.0 * ((expm1((log1p((i / n)) * n)) / i) * n);
      	} else if (t_0 <= ((double) INFINITY)) {
      		tmp = (((pow(((i / n) + 1.0), n) - 1.0) * 100.0) / i) * n;
      	} else {
      		tmp = 100.0 * n;
      	}
      	return tmp;
      }
      
      public static double code(double i, double n) {
      	double t_0 = 100.0 * ((Math.pow((1.0 + (i / n)), n) - 1.0) / (i / n));
      	double tmp;
      	if (t_0 <= -Double.POSITIVE_INFINITY) {
      		tmp = 100.0 * (((Math.pow((i / n), n) - 1.0) / i) * n);
      	} else if (t_0 <= 0.0) {
      		tmp = 100.0 * ((Math.expm1((Math.log1p((i / n)) * n)) / i) * n);
      	} else if (t_0 <= Double.POSITIVE_INFINITY) {
      		tmp = (((Math.pow(((i / n) + 1.0), n) - 1.0) * 100.0) / i) * n;
      	} else {
      		tmp = 100.0 * n;
      	}
      	return tmp;
      }
      
      def code(i, n):
      	t_0 = 100.0 * ((math.pow((1.0 + (i / n)), n) - 1.0) / (i / n))
      	tmp = 0
      	if t_0 <= -math.inf:
      		tmp = 100.0 * (((math.pow((i / n), n) - 1.0) / i) * n)
      	elif t_0 <= 0.0:
      		tmp = 100.0 * ((math.expm1((math.log1p((i / n)) * n)) / i) * n)
      	elif t_0 <= math.inf:
      		tmp = (((math.pow(((i / n) + 1.0), n) - 1.0) * 100.0) / i) * n
      	else:
      		tmp = 100.0 * n
      	return tmp
      
      function code(i, n)
      	t_0 = Float64(100.0 * Float64(Float64((Float64(1.0 + Float64(i / n)) ^ n) - 1.0) / Float64(i / n)))
      	tmp = 0.0
      	if (t_0 <= Float64(-Inf))
      		tmp = Float64(100.0 * Float64(Float64(Float64((Float64(i / n) ^ n) - 1.0) / i) * n));
      	elseif (t_0 <= 0.0)
      		tmp = Float64(100.0 * Float64(Float64(expm1(Float64(log1p(Float64(i / n)) * n)) / i) * n));
      	elseif (t_0 <= Inf)
      		tmp = Float64(Float64(Float64(Float64((Float64(Float64(i / n) + 1.0) ^ n) - 1.0) * 100.0) / i) * n);
      	else
      		tmp = Float64(100.0 * n);
      	end
      	return tmp
      end
      
      code[i_, n_] := Block[{t$95$0 = 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]}, If[LessEqual[t$95$0, (-Infinity)], N[(100.0 * N[(N[(N[(N[Power[N[(i / n), $MachinePrecision], n], $MachinePrecision] - 1.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 0.0], N[(100.0 * N[(N[(N[(Exp[N[(N[Log[1 + N[(i / n), $MachinePrecision]], $MachinePrecision] * n), $MachinePrecision]] - 1), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(N[(N[(N[(N[Power[N[(N[(i / n), $MachinePrecision] + 1.0), $MachinePrecision], n], $MachinePrecision] - 1.0), $MachinePrecision] * 100.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * n), $MachinePrecision]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := 100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\
      \mathbf{if}\;t\_0 \leq -\infty:\\
      \;\;\;\;100 \cdot \left(\frac{{\left(\frac{i}{n}\right)}^{n} - 1}{i} \cdot n\right)\\
      
      \mathbf{elif}\;t\_0 \leq 0:\\
      \;\;\;\;100 \cdot \left(\frac{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{i}{n}\right) \cdot n\right)}{i} \cdot n\right)\\
      
      \mathbf{elif}\;t\_0 \leq \infty:\\
      \;\;\;\;\frac{\left({\left(\frac{i}{n} + 1\right)}^{n} - 1\right) \cdot 100}{i} \cdot n\\
      
      \mathbf{else}:\\
      \;\;\;\;100 \cdot n\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 4 regimes
      2. if (*.f64 #s(literal 100 binary64) (/.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 100.0%

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

          \[\leadsto 100 \cdot \frac{{\color{blue}{\left(\frac{i}{n}\right)}}^{n} - 1}{\frac{i}{n}} \]
        4. Step-by-step derivation
          1. lift-/.f64100.0

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

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

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

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

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

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

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

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

        if -inf.0 < (*.f64 #s(literal 100 binary64) (/.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 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 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. lift-pow.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

        if -0.0 < (*.f64 #s(literal 100 binary64) (/.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 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. lift-pow.f64N/A

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

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

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

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

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

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

            \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
          11. 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}} \]
          12. 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}} \]
          13. 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}} \]
          14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        if +inf.0 < (*.f64 #s(literal 100 binary64) (/.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 \color{blue}{n} \]
        4. Step-by-step derivation
          1. Applied rewrites89.7%

            \[\leadsto 100 \cdot \color{blue}{n} \]
        5. Recombined 4 regimes into one program.
        6. Add Preprocessing

        Alternative 4: 75.3% accurate, 0.3× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} t_0 := 100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\ \mathbf{if}\;t\_0 \leq -\infty:\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \mathbf{elif}\;t\_0 \leq \infty:\\ \;\;\;\;100 \cdot \left(\mathsf{expm1}\left(i\right) \cdot \frac{n}{i}\right)\\ \mathbf{else}:\\ \;\;\;\;100 \cdot n\\ \end{array} \end{array} \]
        (FPCore (i n)
         :precision binary64
         (let* ((t_0 (* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n)))))
           (if (<= t_0 (- INFINITY))
             (*
              (fma (fma (fma 4.166666666666667 i 16.666666666666668) i 50.0) i 100.0)
              n)
             (if (<= t_0 INFINITY) (* 100.0 (* (expm1 i) (/ n i))) (* 100.0 n)))))
        double code(double i, double n) {
        	double t_0 = 100.0 * ((pow((1.0 + (i / n)), n) - 1.0) / (i / n));
        	double tmp;
        	if (t_0 <= -((double) INFINITY)) {
        		tmp = fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n;
        	} else if (t_0 <= ((double) INFINITY)) {
        		tmp = 100.0 * (expm1(i) * (n / i));
        	} else {
        		tmp = 100.0 * n;
        	}
        	return tmp;
        }
        
        function code(i, n)
        	t_0 = Float64(100.0 * Float64(Float64((Float64(1.0 + Float64(i / n)) ^ n) - 1.0) / Float64(i / n)))
        	tmp = 0.0
        	if (t_0 <= Float64(-Inf))
        		tmp = Float64(fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n);
        	elseif (t_0 <= Inf)
        		tmp = Float64(100.0 * Float64(expm1(i) * Float64(n / i)));
        	else
        		tmp = Float64(100.0 * n);
        	end
        	return tmp
        end
        
        code[i_, n_] := Block[{t$95$0 = 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]}, If[LessEqual[t$95$0, (-Infinity)], N[(N[(N[(N[(4.166666666666667 * i + 16.666666666666668), $MachinePrecision] * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(100.0 * N[(N[(Exp[i] - 1), $MachinePrecision] * N[(n / i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(100.0 * n), $MachinePrecision]]]]
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        t_0 := 100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\
        \mathbf{if}\;t\_0 \leq -\infty:\\
        \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\
        
        \mathbf{elif}\;t\_0 \leq \infty:\\
        \;\;\;\;100 \cdot \left(\mathsf{expm1}\left(i\right) \cdot \frac{n}{i}\right)\\
        
        \mathbf{else}:\\
        \;\;\;\;100 \cdot n\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 3 regimes
        2. if (*.f64 #s(literal 100 binary64) (/.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 100.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 \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. lift-pow.f64N/A

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

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

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

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

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

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

              \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
            11. 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}} \]
            12. 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}} \]
            13. 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}} \]
            14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

              \[\leadsto \left(100 \cdot \frac{e^{i} - 1}{\color{blue}{i}}\right) \cdot n \]
            3. lift-expm1.f6425.7

              \[\leadsto \left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n \]
          9. Applied rewrites25.7%

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

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

              \[\leadsto \left(i \cdot \left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right)\right) + 100\right) \cdot n \]
            2. *-commutativeN/A

              \[\leadsto \left(\left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right)\right) \cdot i + 100\right) \cdot n \]
            3. lower-fma.f64N/A

              \[\leadsto \mathsf{fma}\left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right), i, 100\right) \cdot n \]
            4. +-commutativeN/A

              \[\leadsto \mathsf{fma}\left(i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right) + 50, i, 100\right) \cdot n \]
            5. *-commutativeN/A

              \[\leadsto \mathsf{fma}\left(\left(\frac{50}{3} + \frac{25}{6} \cdot i\right) \cdot i + 50, i, 100\right) \cdot n \]
            6. lower-fma.f64N/A

              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{50}{3} + \frac{25}{6} \cdot i, i, 50\right), i, 100\right) \cdot n \]
            7. +-commutativeN/A

              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{25}{6} \cdot i + \frac{50}{3}, i, 50\right), i, 100\right) \cdot n \]
            8. lower-fma.f6488.2

              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n \]
          12. Applied rewrites88.2%

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

          if -inf.0 < (*.f64 #s(literal 100 binary64) (/.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 31.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 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 \frac{n \cdot \left(e^{i} - 1\right)}{\color{blue}{i}} \]
            2. *-commutativeN/A

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

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

              \[\leadsto 100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i} \]
          5. Applied rewrites72.0%

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

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

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

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

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

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

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

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

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

          if +inf.0 < (*.f64 #s(literal 100 binary64) (/.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 \color{blue}{n} \]
          4. Step-by-step derivation
            1. Applied rewrites89.7%

              \[\leadsto 100 \cdot \color{blue}{n} \]
          5. Recombined 3 regimes into one program.
          6. Add Preprocessing

          Alternative 5: 77.8% accurate, 0.9× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;i \leq -1.08 \cdot 10^{+141}:\\ \;\;\;\;100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\ \mathbf{elif}\;i \leq -1 \cdot 10^{-186}:\\ \;\;\;\;100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i}\\ \mathbf{elif}\;i \leq 4 \cdot 10^{+167}:\\ \;\;\;\;\left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;\frac{\left({\left(\frac{i}{n} + 1\right)}^{n} - 1\right) \cdot 100}{i} \cdot n\\ \end{array} \end{array} \]
          (FPCore (i n)
           :precision binary64
           (if (<= i -1.08e+141)
             (* 100.0 (/ (- (pow (+ 1.0 (/ i n)) n) 1.0) (/ i n)))
             (if (<= i -1e-186)
               (* 100.0 (/ (* (expm1 i) n) i))
               (if (<= i 4e+167)
                 (* (* 100.0 (/ (expm1 i) i)) n)
                 (* (/ (* (- (pow (+ (/ i n) 1.0) n) 1.0) 100.0) i) n)))))
          double code(double i, double n) {
          	double tmp;
          	if (i <= -1.08e+141) {
          		tmp = 100.0 * ((pow((1.0 + (i / n)), n) - 1.0) / (i / n));
          	} else if (i <= -1e-186) {
          		tmp = 100.0 * ((expm1(i) * n) / i);
          	} else if (i <= 4e+167) {
          		tmp = (100.0 * (expm1(i) / i)) * n;
          	} else {
          		tmp = (((pow(((i / n) + 1.0), n) - 1.0) * 100.0) / i) * n;
          	}
          	return tmp;
          }
          
          public static double code(double i, double n) {
          	double tmp;
          	if (i <= -1.08e+141) {
          		tmp = 100.0 * ((Math.pow((1.0 + (i / n)), n) - 1.0) / (i / n));
          	} else if (i <= -1e-186) {
          		tmp = 100.0 * ((Math.expm1(i) * n) / i);
          	} else if (i <= 4e+167) {
          		tmp = (100.0 * (Math.expm1(i) / i)) * n;
          	} else {
          		tmp = (((Math.pow(((i / n) + 1.0), n) - 1.0) * 100.0) / i) * n;
          	}
          	return tmp;
          }
          
          def code(i, n):
          	tmp = 0
          	if i <= -1.08e+141:
          		tmp = 100.0 * ((math.pow((1.0 + (i / n)), n) - 1.0) / (i / n))
          	elif i <= -1e-186:
          		tmp = 100.0 * ((math.expm1(i) * n) / i)
          	elif i <= 4e+167:
          		tmp = (100.0 * (math.expm1(i) / i)) * n
          	else:
          		tmp = (((math.pow(((i / n) + 1.0), n) - 1.0) * 100.0) / i) * n
          	return tmp
          
          function code(i, n)
          	tmp = 0.0
          	if (i <= -1.08e+141)
          		tmp = Float64(100.0 * Float64(Float64((Float64(1.0 + Float64(i / n)) ^ n) - 1.0) / Float64(i / n)));
          	elseif (i <= -1e-186)
          		tmp = Float64(100.0 * Float64(Float64(expm1(i) * n) / i));
          	elseif (i <= 4e+167)
          		tmp = Float64(Float64(100.0 * Float64(expm1(i) / i)) * n);
          	else
          		tmp = Float64(Float64(Float64(Float64((Float64(Float64(i / n) + 1.0) ^ n) - 1.0) * 100.0) / i) * n);
          	end
          	return tmp
          end
          
          code[i_, n_] := If[LessEqual[i, -1.08e+141], 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], If[LessEqual[i, -1e-186], N[(100.0 * N[(N[(N[(Exp[i] - 1), $MachinePrecision] * n), $MachinePrecision] / i), $MachinePrecision]), $MachinePrecision], If[LessEqual[i, 4e+167], N[(N[(100.0 * N[(N[(Exp[i] - 1), $MachinePrecision] / i), $MachinePrecision]), $MachinePrecision] * n), $MachinePrecision], N[(N[(N[(N[(N[Power[N[(N[(i / n), $MachinePrecision] + 1.0), $MachinePrecision], n], $MachinePrecision] - 1.0), $MachinePrecision] * 100.0), $MachinePrecision] / i), $MachinePrecision] * n), $MachinePrecision]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          \mathbf{if}\;i \leq -1.08 \cdot 10^{+141}:\\
          \;\;\;\;100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}}\\
          
          \mathbf{elif}\;i \leq -1 \cdot 10^{-186}:\\
          \;\;\;\;100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i}\\
          
          \mathbf{elif}\;i \leq 4 \cdot 10^{+167}:\\
          \;\;\;\;\left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n\\
          
          \mathbf{else}:\\
          \;\;\;\;\frac{\left({\left(\frac{i}{n} + 1\right)}^{n} - 1\right) \cdot 100}{i} \cdot n\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 4 regimes
          2. if i < -1.08000000000000007e141

            1. Initial program 89.5%

              \[100 \cdot \frac{{\left(1 + \frac{i}{n}\right)}^{n} - 1}{\frac{i}{n}} \]
            2. Add Preprocessing

            if -1.08000000000000007e141 < i < -9.9999999999999991e-187

            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 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 \frac{n \cdot \left(e^{i} - 1\right)}{\color{blue}{i}} \]
              2. *-commutativeN/A

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

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

                \[\leadsto 100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i} \]
            5. Applied rewrites78.7%

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

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

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

                \[\leadsto 100 \cdot \mathsf{fma}\left(\frac{1}{2}, i \cdot \color{blue}{n}, n\right) \]
              3. lower-*.f6442.6

                \[\leadsto 100 \cdot \mathsf{fma}\left(0.5, i \cdot n, n\right) \]
            8. Applied rewrites42.6%

              \[\leadsto 100 \cdot \mathsf{fma}\left(0.5, \color{blue}{i \cdot n}, n\right) \]
            9. Taylor expanded in n around inf

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

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

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

                \[\leadsto 100 \cdot \frac{\left(e^{i} - 1\right) \cdot n}{i} \]
              4. lift-expm1.f6478.7

                \[\leadsto 100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i} \]
            11. Applied rewrites78.7%

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

            if -9.9999999999999991e-187 < i < 4.0000000000000002e167

            1. Initial program 12.4%

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

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

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

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

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

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

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

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

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

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

                \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
              11. 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}} \]
              12. 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}} \]
              13. 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}} \]
              14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            if 4.0000000000000002e167 < i

            1. Initial program 71.4%

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

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

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

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

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

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

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

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

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

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

                \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
              11. 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}} \]
              12. 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}} \]
              13. 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}} \]
              14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Alternative 6: 77.7% accurate, 0.9× speedup?

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

            1. Initial program 82.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. lift--.f64N/A

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

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

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

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

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

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

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

                \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
              11. 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}} \]
              12. 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}} \]
              13. 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}} \]
              14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            if -1.08000000000000007e141 < i < -9.9999999999999991e-187

            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 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 \frac{n \cdot \left(e^{i} - 1\right)}{\color{blue}{i}} \]
              2. *-commutativeN/A

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

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

                \[\leadsto 100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i} \]
            5. Applied rewrites78.7%

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

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

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

                \[\leadsto 100 \cdot \mathsf{fma}\left(\frac{1}{2}, i \cdot \color{blue}{n}, n\right) \]
              3. lower-*.f6442.6

                \[\leadsto 100 \cdot \mathsf{fma}\left(0.5, i \cdot n, n\right) \]
            8. Applied rewrites42.6%

              \[\leadsto 100 \cdot \mathsf{fma}\left(0.5, \color{blue}{i \cdot n}, n\right) \]
            9. Taylor expanded in n around inf

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

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

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

                \[\leadsto 100 \cdot \frac{\left(e^{i} - 1\right) \cdot n}{i} \]
              4. lift-expm1.f6478.7

                \[\leadsto 100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i} \]
            11. Applied rewrites78.7%

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

            if -9.9999999999999991e-187 < i < 4.0000000000000002e167

            1. Initial program 12.4%

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

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

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

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

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

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

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

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

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

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

                \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
              11. 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}} \]
              12. 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}} \]
              13. 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}} \]
              14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Alternative 7: 80.6% accurate, 1.0× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := 100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i}\\ \mathbf{if}\;n \leq -2.9 \cdot 10^{-34}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;n \leq -5 \cdot 10^{-201}:\\ \;\;\;\;100 \cdot \frac{i}{\frac{i}{n}}\\ \mathbf{elif}\;n \leq 2.5 \cdot 10^{-141}:\\ \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\ \mathbf{elif}\;n \leq 1.6 \cdot 10^{+33}:\\ \;\;\;\;100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right), n\right)\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
          (FPCore (i n)
           :precision binary64
           (let* ((t_0 (* 100.0 (/ (* (expm1 i) n) i))))
             (if (<= n -2.9e-34)
               t_0
               (if (<= n -5e-201)
                 (* 100.0 (/ i (/ i n)))
                 (if (<= n 2.5e-141)
                   (* 100.0 (/ (- 1.0 1.0) (/ i n)))
                   (if (<= n 1.6e+33)
                     (*
                      100.0
                      (fma
                       i
                       (fma
                        0.5
                        n
                        (*
                         i
                         (fma 0.041666666666666664 (* i n) (* 0.16666666666666666 n))))
                       n))
                     t_0))))))
          double code(double i, double n) {
          	double t_0 = 100.0 * ((expm1(i) * n) / i);
          	double tmp;
          	if (n <= -2.9e-34) {
          		tmp = t_0;
          	} else if (n <= -5e-201) {
          		tmp = 100.0 * (i / (i / n));
          	} else if (n <= 2.5e-141) {
          		tmp = 100.0 * ((1.0 - 1.0) / (i / n));
          	} else if (n <= 1.6e+33) {
          		tmp = 100.0 * fma(i, fma(0.5, n, (i * fma(0.041666666666666664, (i * n), (0.16666666666666666 * n)))), n);
          	} else {
          		tmp = t_0;
          	}
          	return tmp;
          }
          
          function code(i, n)
          	t_0 = Float64(100.0 * Float64(Float64(expm1(i) * n) / i))
          	tmp = 0.0
          	if (n <= -2.9e-34)
          		tmp = t_0;
          	elseif (n <= -5e-201)
          		tmp = Float64(100.0 * Float64(i / Float64(i / n)));
          	elseif (n <= 2.5e-141)
          		tmp = Float64(100.0 * Float64(Float64(1.0 - 1.0) / Float64(i / n)));
          	elseif (n <= 1.6e+33)
          		tmp = Float64(100.0 * fma(i, fma(0.5, n, Float64(i * fma(0.041666666666666664, Float64(i * n), Float64(0.16666666666666666 * n)))), n));
          	else
          		tmp = t_0;
          	end
          	return tmp
          end
          
          code[i_, n_] := Block[{t$95$0 = N[(100.0 * N[(N[(N[(Exp[i] - 1), $MachinePrecision] * n), $MachinePrecision] / i), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[n, -2.9e-34], t$95$0, If[LessEqual[n, -5e-201], N[(100.0 * N[(i / N[(i / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[n, 2.5e-141], N[(100.0 * N[(N[(1.0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[n, 1.6e+33], N[(100.0 * N[(i * N[(0.5 * n + N[(i * N[(0.041666666666666664 * N[(i * n), $MachinePrecision] + N[(0.16666666666666666 * n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + n), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := 100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i}\\
          \mathbf{if}\;n \leq -2.9 \cdot 10^{-34}:\\
          \;\;\;\;t\_0\\
          
          \mathbf{elif}\;n \leq -5 \cdot 10^{-201}:\\
          \;\;\;\;100 \cdot \frac{i}{\frac{i}{n}}\\
          
          \mathbf{elif}\;n \leq 2.5 \cdot 10^{-141}:\\
          \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\
          
          \mathbf{elif}\;n \leq 1.6 \cdot 10^{+33}:\\
          \;\;\;\;100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right), n\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;t\_0\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 4 regimes
          2. if n < -2.9000000000000002e-34 or 1.60000000000000009e33 < n

            1. Initial program 23.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 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 \frac{n \cdot \left(e^{i} - 1\right)}{\color{blue}{i}} \]
              2. *-commutativeN/A

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

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

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

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

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

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

                \[\leadsto 100 \cdot \mathsf{fma}\left(\frac{1}{2}, i \cdot \color{blue}{n}, n\right) \]
              3. lower-*.f6463.9

                \[\leadsto 100 \cdot \mathsf{fma}\left(0.5, i \cdot n, n\right) \]
            8. Applied rewrites63.9%

              \[\leadsto 100 \cdot \mathsf{fma}\left(0.5, \color{blue}{i \cdot n}, n\right) \]
            9. Taylor expanded in n around inf

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

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

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

                \[\leadsto 100 \cdot \frac{\left(e^{i} - 1\right) \cdot n}{i} \]
              4. lift-expm1.f6492.0

                \[\leadsto 100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i} \]
            11. Applied rewrites92.0%

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

            if -2.9000000000000002e-34 < n < -4.9999999999999999e-201

            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}{i}}{\frac{i}{n}} \]
            4. Step-by-step derivation
              1. Applied rewrites54.2%

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

              if -4.9999999999999999e-201 < n < 2.5e-141

              1. Initial program 64.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}{1} - 1}{\frac{i}{n}} \]
              4. Step-by-step derivation
                1. Applied rewrites76.5%

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

                if 2.5e-141 < n < 1.60000000000000009e33

                1. Initial program 24.2%

                  \[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 \frac{n \cdot \left(e^{i} - 1\right)}{\color{blue}{i}} \]
                  2. *-commutativeN/A

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

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

                    \[\leadsto 100 \cdot \frac{\mathsf{expm1}\left(i\right) \cdot n}{i} \]
                5. Applied rewrites52.3%

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

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

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

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

                    \[\leadsto 100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(\frac{1}{2}, n, i \cdot \left(\frac{1}{24} \cdot \left(i \cdot n\right) + \frac{1}{6} \cdot n\right)\right), n\right) \]
                  4. lower-*.f64N/A

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

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

                    \[\leadsto 100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(\frac{1}{2}, n, i \cdot \mathsf{fma}\left(\frac{1}{24}, i \cdot n, \frac{1}{6} \cdot n\right)\right), n\right) \]
                  7. lower-*.f6471.7

                    \[\leadsto 100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right), n\right) \]
                8. Applied rewrites71.7%

                  \[\leadsto 100 \cdot \mathsf{fma}\left(i, \color{blue}{\mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right)}, n\right) \]
              5. Recombined 4 regimes into one program.
              6. Add Preprocessing

              Alternative 8: 80.5% accurate, 1.1× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -5 \cdot 10^{-201} \lor \neg \left(n \leq 2.5 \cdot 10^{-141}\right):\\ \;\;\;\;\left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\ \end{array} \end{array} \]
              (FPCore (i n)
               :precision binary64
               (if (or (<= n -5e-201) (not (<= n 2.5e-141)))
                 (* (* 100.0 (/ (expm1 i) i)) n)
                 (* 100.0 (/ (- 1.0 1.0) (/ i n)))))
              double code(double i, double n) {
              	double tmp;
              	if ((n <= -5e-201) || !(n <= 2.5e-141)) {
              		tmp = (100.0 * (expm1(i) / i)) * n;
              	} else {
              		tmp = 100.0 * ((1.0 - 1.0) / (i / n));
              	}
              	return tmp;
              }
              
              public static double code(double i, double n) {
              	double tmp;
              	if ((n <= -5e-201) || !(n <= 2.5e-141)) {
              		tmp = (100.0 * (Math.expm1(i) / i)) * n;
              	} else {
              		tmp = 100.0 * ((1.0 - 1.0) / (i / n));
              	}
              	return tmp;
              }
              
              def code(i, n):
              	tmp = 0
              	if (n <= -5e-201) or not (n <= 2.5e-141):
              		tmp = (100.0 * (math.expm1(i) / i)) * n
              	else:
              		tmp = 100.0 * ((1.0 - 1.0) / (i / n))
              	return tmp
              
              function code(i, n)
              	tmp = 0.0
              	if ((n <= -5e-201) || !(n <= 2.5e-141))
              		tmp = Float64(Float64(100.0 * Float64(expm1(i) / i)) * n);
              	else
              		tmp = Float64(100.0 * Float64(Float64(1.0 - 1.0) / Float64(i / n)));
              	end
              	return tmp
              end
              
              code[i_, n_] := If[Or[LessEqual[n, -5e-201], N[Not[LessEqual[n, 2.5e-141]], $MachinePrecision]], N[(N[(100.0 * N[(N[(Exp[i] - 1), $MachinePrecision] / i), $MachinePrecision]), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * N[(N[(1.0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              \mathbf{if}\;n \leq -5 \cdot 10^{-201} \lor \neg \left(n \leq 2.5 \cdot 10^{-141}\right):\\
              \;\;\;\;\left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n\\
              
              \mathbf{else}:\\
              \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if n < -4.9999999999999999e-201 or 2.5e-141 < n

                1. Initial program 24.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 \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. lift-pow.f64N/A

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

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

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

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

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

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

                    \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
                  11. 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}} \]
                  12. 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}} \]
                  13. 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}} \]
                  14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    \[\leadsto \left(100 \cdot \frac{e^{i} - 1}{\color{blue}{i}}\right) \cdot n \]
                  3. lift-expm1.f6483.0

                    \[\leadsto \left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n \]
                9. Applied rewrites83.0%

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

                if -4.9999999999999999e-201 < n < 2.5e-141

                1. Initial program 64.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}{1} - 1}{\frac{i}{n}} \]
                4. Step-by-step derivation
                  1. Applied rewrites76.5%

                    \[\leadsto 100 \cdot \frac{\color{blue}{1} - 1}{\frac{i}{n}} \]
                5. Recombined 2 regimes into one program.
                6. Final simplification82.2%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -5 \cdot 10^{-201} \lor \neg \left(n \leq 2.5 \cdot 10^{-141}\right):\\ \;\;\;\;\left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\ \end{array} \]
                7. Add Preprocessing

                Alternative 9: 67.7% accurate, 2.6× speedup?

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

                  1. Initial program 22.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 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 \frac{n \cdot \left(e^{i} - 1\right)}{\color{blue}{i}} \]
                    2. *-commutativeN/A

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

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

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

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

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

                      \[\leadsto 100 \cdot \frac{\left(i \cdot \left(1 + i \cdot \left(\frac{1}{2} + i \cdot \left(\frac{1}{6} + \frac{1}{24} \cdot i\right)\right)\right)\right) \cdot n}{i} \]
                    2. +-commutativeN/A

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

                      \[\leadsto 100 \cdot \frac{\left(i \cdot \mathsf{fma}\left(i, \frac{1}{2} + i \cdot \left(\frac{1}{6} + \frac{1}{24} \cdot i\right), 1\right)\right) \cdot n}{i} \]
                    4. +-commutativeN/A

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

                      \[\leadsto 100 \cdot \frac{\left(i \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(i, \frac{1}{6} + \frac{1}{24} \cdot i, \frac{1}{2}\right), 1\right)\right) \cdot n}{i} \]
                    6. +-commutativeN/A

                      \[\leadsto 100 \cdot \frac{\left(i \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(i, \frac{1}{24} \cdot i + \frac{1}{6}, \frac{1}{2}\right), 1\right)\right) \cdot n}{i} \]
                    7. lower-fma.f6464.5

                      \[\leadsto 100 \cdot \frac{\left(i \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(i, \mathsf{fma}\left(0.041666666666666664, i, 0.16666666666666666\right), 0.5\right), 1\right)\right) \cdot n}{i} \]
                  8. Applied rewrites64.5%

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

                  if -2.3e17 < n < -4.9999999999999999e-201

                  1. Initial program 26.2%

                    \[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}{i}}{\frac{i}{n}} \]
                  4. Step-by-step derivation
                    1. Applied rewrites59.2%

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

                    if -4.9999999999999999e-201 < n < 2.5e-141

                    1. Initial program 64.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}{1} - 1}{\frac{i}{n}} \]
                    4. Step-by-step derivation
                      1. Applied rewrites76.5%

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

                      if 2.5e-141 < n

                      1. Initial program 24.4%

                        \[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 \frac{n \cdot \left(e^{i} - 1\right)}{\color{blue}{i}} \]
                        2. *-commutativeN/A

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

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

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

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

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

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

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

                          \[\leadsto 100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(\frac{1}{2}, n, i \cdot \left(\frac{1}{24} \cdot \left(i \cdot n\right) + \frac{1}{6} \cdot n\right)\right), n\right) \]
                        4. lower-*.f64N/A

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

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

                          \[\leadsto 100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(\frac{1}{2}, n, i \cdot \mathsf{fma}\left(\frac{1}{24}, i \cdot n, \frac{1}{6} \cdot n\right)\right), n\right) \]
                        7. lower-*.f6477.0

                          \[\leadsto 100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right), n\right) \]
                      8. Applied rewrites77.0%

                        \[\leadsto 100 \cdot \mathsf{fma}\left(i, \color{blue}{\mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right)}, n\right) \]
                    5. Recombined 4 regimes into one program.
                    6. Add Preprocessing

                    Alternative 10: 65.9% accurate, 2.9× speedup?

                    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -1.05 \cdot 10^{-199} \lor \neg \left(n \leq 2.5 \cdot 10^{-141}\right):\\ \;\;\;\;100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right), n\right)\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\ \end{array} \end{array} \]
                    (FPCore (i n)
                     :precision binary64
                     (if (or (<= n -1.05e-199) (not (<= n 2.5e-141)))
                       (*
                        100.0
                        (fma
                         i
                         (fma
                          0.5
                          n
                          (* i (fma 0.041666666666666664 (* i n) (* 0.16666666666666666 n))))
                         n))
                       (* 100.0 (/ (- 1.0 1.0) (/ i n)))))
                    double code(double i, double n) {
                    	double tmp;
                    	if ((n <= -1.05e-199) || !(n <= 2.5e-141)) {
                    		tmp = 100.0 * fma(i, fma(0.5, n, (i * fma(0.041666666666666664, (i * n), (0.16666666666666666 * n)))), n);
                    	} else {
                    		tmp = 100.0 * ((1.0 - 1.0) / (i / n));
                    	}
                    	return tmp;
                    }
                    
                    function code(i, n)
                    	tmp = 0.0
                    	if ((n <= -1.05e-199) || !(n <= 2.5e-141))
                    		tmp = Float64(100.0 * fma(i, fma(0.5, n, Float64(i * fma(0.041666666666666664, Float64(i * n), Float64(0.16666666666666666 * n)))), n));
                    	else
                    		tmp = Float64(100.0 * Float64(Float64(1.0 - 1.0) / Float64(i / n)));
                    	end
                    	return tmp
                    end
                    
                    code[i_, n_] := If[Or[LessEqual[n, -1.05e-199], N[Not[LessEqual[n, 2.5e-141]], $MachinePrecision]], N[(100.0 * N[(i * N[(0.5 * n + N[(i * N[(0.041666666666666664 * N[(i * n), $MachinePrecision] + N[(0.16666666666666666 * n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + n), $MachinePrecision]), $MachinePrecision], N[(100.0 * N[(N[(1.0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
                    
                    \begin{array}{l}
                    
                    \\
                    \begin{array}{l}
                    \mathbf{if}\;n \leq -1.05 \cdot 10^{-199} \lor \neg \left(n \leq 2.5 \cdot 10^{-141}\right):\\
                    \;\;\;\;100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right), n\right)\\
                    
                    \mathbf{else}:\\
                    \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\
                    
                    
                    \end{array}
                    \end{array}
                    
                    Derivation
                    1. Split input into 2 regimes
                    2. if n < -1.05000000000000001e-199 or 2.5e-141 < n

                      1. Initial program 24.0%

                        \[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 \frac{n \cdot \left(e^{i} - 1\right)}{\color{blue}{i}} \]
                        2. *-commutativeN/A

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

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

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

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

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

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

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

                          \[\leadsto 100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(\frac{1}{2}, n, i \cdot \left(\frac{1}{24} \cdot \left(i \cdot n\right) + \frac{1}{6} \cdot n\right)\right), n\right) \]
                        4. lower-*.f64N/A

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

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

                          \[\leadsto 100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(\frac{1}{2}, n, i \cdot \mathsf{fma}\left(\frac{1}{24}, i \cdot n, \frac{1}{6} \cdot n\right)\right), n\right) \]
                        7. lower-*.f6466.4

                          \[\leadsto 100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right), n\right) \]
                      8. Applied rewrites66.4%

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

                      if -1.05000000000000001e-199 < n < 2.5e-141

                      1. Initial program 64.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}{1} - 1}{\frac{i}{n}} \]
                      4. Step-by-step derivation
                        1. Applied rewrites76.5%

                          \[\leadsto 100 \cdot \frac{\color{blue}{1} - 1}{\frac{i}{n}} \]
                      5. Recombined 2 regimes into one program.
                      6. Final simplification67.7%

                        \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -1.05 \cdot 10^{-199} \lor \neg \left(n \leq 2.5 \cdot 10^{-141}\right):\\ \;\;\;\;100 \cdot \mathsf{fma}\left(i, \mathsf{fma}\left(0.5, n, i \cdot \mathsf{fma}\left(0.041666666666666664, i \cdot n, 0.16666666666666666 \cdot n\right)\right), n\right)\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\ \end{array} \]
                      7. Add Preprocessing

                      Alternative 11: 65.9% accurate, 3.4× speedup?

                      \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -1.05 \cdot 10^{-199} \lor \neg \left(n \leq 2.5 \cdot 10^{-141}\right):\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\ \end{array} \end{array} \]
                      (FPCore (i n)
                       :precision binary64
                       (if (or (<= n -1.05e-199) (not (<= n 2.5e-141)))
                         (*
                          (fma (fma (fma 4.166666666666667 i 16.666666666666668) i 50.0) i 100.0)
                          n)
                         (* 100.0 (/ (- 1.0 1.0) (/ i n)))))
                      double code(double i, double n) {
                      	double tmp;
                      	if ((n <= -1.05e-199) || !(n <= 2.5e-141)) {
                      		tmp = fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n;
                      	} else {
                      		tmp = 100.0 * ((1.0 - 1.0) / (i / n));
                      	}
                      	return tmp;
                      }
                      
                      function code(i, n)
                      	tmp = 0.0
                      	if ((n <= -1.05e-199) || !(n <= 2.5e-141))
                      		tmp = Float64(fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n);
                      	else
                      		tmp = Float64(100.0 * Float64(Float64(1.0 - 1.0) / Float64(i / n)));
                      	end
                      	return tmp
                      end
                      
                      code[i_, n_] := If[Or[LessEqual[n, -1.05e-199], N[Not[LessEqual[n, 2.5e-141]], $MachinePrecision]], N[(N[(N[(N[(4.166666666666667 * i + 16.666666666666668), $MachinePrecision] * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * N[(N[(1.0 - 1.0), $MachinePrecision] / N[(i / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
                      
                      \begin{array}{l}
                      
                      \\
                      \begin{array}{l}
                      \mathbf{if}\;n \leq -1.05 \cdot 10^{-199} \lor \neg \left(n \leq 2.5 \cdot 10^{-141}\right):\\
                      \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\
                      
                      \mathbf{else}:\\
                      \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\
                      
                      
                      \end{array}
                      \end{array}
                      
                      Derivation
                      1. Split input into 2 regimes
                      2. if n < -1.05000000000000001e-199 or 2.5e-141 < n

                        1. Initial program 24.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 \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. lift-pow.f64N/A

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

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

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

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

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

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

                            \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
                          11. 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}} \]
                          12. 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}} \]
                          13. 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}} \]
                          14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                            \[\leadsto \left(100 \cdot \frac{e^{i} - 1}{\color{blue}{i}}\right) \cdot n \]
                          3. lift-expm1.f6483.0

                            \[\leadsto \left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n \]
                        9. Applied rewrites83.0%

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

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

                            \[\leadsto \left(i \cdot \left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right)\right) + 100\right) \cdot n \]
                          2. *-commutativeN/A

                            \[\leadsto \left(\left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right)\right) \cdot i + 100\right) \cdot n \]
                          3. lower-fma.f64N/A

                            \[\leadsto \mathsf{fma}\left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right), i, 100\right) \cdot n \]
                          4. +-commutativeN/A

                            \[\leadsto \mathsf{fma}\left(i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right) + 50, i, 100\right) \cdot n \]
                          5. *-commutativeN/A

                            \[\leadsto \mathsf{fma}\left(\left(\frac{50}{3} + \frac{25}{6} \cdot i\right) \cdot i + 50, i, 100\right) \cdot n \]
                          6. lower-fma.f64N/A

                            \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{50}{3} + \frac{25}{6} \cdot i, i, 50\right), i, 100\right) \cdot n \]
                          7. +-commutativeN/A

                            \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{25}{6} \cdot i + \frac{50}{3}, i, 50\right), i, 100\right) \cdot n \]
                          8. lower-fma.f6466.4

                            \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n \]
                        12. Applied rewrites66.4%

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

                        if -1.05000000000000001e-199 < n < 2.5e-141

                        1. Initial program 64.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}{1} - 1}{\frac{i}{n}} \]
                        4. Step-by-step derivation
                          1. Applied rewrites76.5%

                            \[\leadsto 100 \cdot \frac{\color{blue}{1} - 1}{\frac{i}{n}} \]
                        5. Recombined 2 regimes into one program.
                        6. Final simplification67.7%

                          \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -1.05 \cdot 10^{-199} \lor \neg \left(n \leq 2.5 \cdot 10^{-141}\right):\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{1 - 1}{\frac{i}{n}}\\ \end{array} \]
                        7. Add Preprocessing

                        Alternative 12: 66.6% accurate, 3.6× speedup?

                        \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;n \leq -2.3 \cdot 10^{+17} \lor \neg \left(n \leq 3.7 \cdot 10^{-40}\right):\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{i}{\frac{i}{n}}\\ \end{array} \end{array} \]
                        (FPCore (i n)
                         :precision binary64
                         (if (or (<= n -2.3e+17) (not (<= n 3.7e-40)))
                           (*
                            (fma (fma (fma 4.166666666666667 i 16.666666666666668) i 50.0) i 100.0)
                            n)
                           (* 100.0 (/ i (/ i n)))))
                        double code(double i, double n) {
                        	double tmp;
                        	if ((n <= -2.3e+17) || !(n <= 3.7e-40)) {
                        		tmp = fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n;
                        	} else {
                        		tmp = 100.0 * (i / (i / n));
                        	}
                        	return tmp;
                        }
                        
                        function code(i, n)
                        	tmp = 0.0
                        	if ((n <= -2.3e+17) || !(n <= 3.7e-40))
                        		tmp = Float64(fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n);
                        	else
                        		tmp = Float64(100.0 * Float64(i / Float64(i / n)));
                        	end
                        	return tmp
                        end
                        
                        code[i_, n_] := If[Or[LessEqual[n, -2.3e+17], N[Not[LessEqual[n, 3.7e-40]], $MachinePrecision]], N[(N[(N[(N[(4.166666666666667 * i + 16.666666666666668), $MachinePrecision] * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision], N[(100.0 * N[(i / N[(i / n), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
                        
                        \begin{array}{l}
                        
                        \\
                        \begin{array}{l}
                        \mathbf{if}\;n \leq -2.3 \cdot 10^{+17} \lor \neg \left(n \leq 3.7 \cdot 10^{-40}\right):\\
                        \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\
                        
                        \mathbf{else}:\\
                        \;\;\;\;100 \cdot \frac{i}{\frac{i}{n}}\\
                        
                        
                        \end{array}
                        \end{array}
                        
                        Derivation
                        1. Split input into 2 regimes
                        2. if n < -2.3e17 or 3.69999999999999998e-40 < n

                          1. Initial program 24.9%

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

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

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

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

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

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

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

                              \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
                            11. 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}} \]
                            12. 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}} \]
                            13. 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}} \]
                            14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                              \[\leadsto \left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n \]
                          9. Applied rewrites91.8%

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

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

                              \[\leadsto \left(i \cdot \left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right)\right) + 100\right) \cdot n \]
                            2. *-commutativeN/A

                              \[\leadsto \left(\left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right)\right) \cdot i + 100\right) \cdot n \]
                            3. lower-fma.f64N/A

                              \[\leadsto \mathsf{fma}\left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right), i, 100\right) \cdot n \]
                            4. +-commutativeN/A

                              \[\leadsto \mathsf{fma}\left(i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right) + 50, i, 100\right) \cdot n \]
                            5. *-commutativeN/A

                              \[\leadsto \mathsf{fma}\left(\left(\frac{50}{3} + \frac{25}{6} \cdot i\right) \cdot i + 50, i, 100\right) \cdot n \]
                            6. lower-fma.f64N/A

                              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{50}{3} + \frac{25}{6} \cdot i, i, 50\right), i, 100\right) \cdot n \]
                            7. +-commutativeN/A

                              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{25}{6} \cdot i + \frac{50}{3}, i, 50\right), i, 100\right) \cdot n \]
                            8. lower-fma.f6472.3

                              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n \]
                          12. Applied rewrites72.3%

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

                          if -2.3e17 < n < 3.69999999999999998e-40

                          1. Initial program 36.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}{i}}{\frac{i}{n}} \]
                          4. Step-by-step derivation
                            1. Applied rewrites55.8%

                              \[\leadsto 100 \cdot \frac{\color{blue}{i}}{\frac{i}{n}} \]
                          5. Recombined 2 regimes into one program.
                          6. Final simplification66.2%

                            \[\leadsto \begin{array}{l} \mathbf{if}\;n \leq -2.3 \cdot 10^{+17} \lor \neg \left(n \leq 3.7 \cdot 10^{-40}\right):\\ \;\;\;\;\mathsf{fma}\left(\mathsf{fma}\left(\mathsf{fma}\left(4.166666666666667, i, 16.666666666666668\right), i, 50\right), i, 100\right) \cdot n\\ \mathbf{else}:\\ \;\;\;\;100 \cdot \frac{i}{\frac{i}{n}}\\ \end{array} \]
                          7. Add Preprocessing

                          Alternative 13: 58.9% accurate, 6.1× speedup?

                          \[\begin{array}{l} \\ \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} \]
                          (FPCore (i n)
                           :precision binary64
                           (* (fma (fma (fma 4.166666666666667 i 16.666666666666668) i 50.0) i 100.0) n))
                          double code(double i, double n) {
                          	return fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n;
                          }
                          
                          function code(i, n)
                          	return Float64(fma(fma(fma(4.166666666666667, i, 16.666666666666668), i, 50.0), i, 100.0) * n)
                          end
                          
                          code[i_, n_] := N[(N[(N[(N[(4.166666666666667 * i + 16.666666666666668), $MachinePrecision] * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision]
                          
                          \begin{array}{l}
                          
                          \\
                          \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}
                          
                          Derivation
                          1. Initial program 29.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 \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. lift-pow.f64N/A

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

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

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

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

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

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

                              \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
                            11. 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}} \]
                            12. 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}} \]
                            13. 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}} \]
                            14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                              \[\leadsto \left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n \]
                          9. Applied rewrites77.6%

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

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

                              \[\leadsto \left(i \cdot \left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right)\right) + 100\right) \cdot n \]
                            2. *-commutativeN/A

                              \[\leadsto \left(\left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right)\right) \cdot i + 100\right) \cdot n \]
                            3. lower-fma.f64N/A

                              \[\leadsto \mathsf{fma}\left(50 + i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right), i, 100\right) \cdot n \]
                            4. +-commutativeN/A

                              \[\leadsto \mathsf{fma}\left(i \cdot \left(\frac{50}{3} + \frac{25}{6} \cdot i\right) + 50, i, 100\right) \cdot n \]
                            5. *-commutativeN/A

                              \[\leadsto \mathsf{fma}\left(\left(\frac{50}{3} + \frac{25}{6} \cdot i\right) \cdot i + 50, i, 100\right) \cdot n \]
                            6. lower-fma.f64N/A

                              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{50}{3} + \frac{25}{6} \cdot i, i, 50\right), i, 100\right) \cdot n \]
                            7. +-commutativeN/A

                              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(\frac{25}{6} \cdot i + \frac{50}{3}, i, 50\right), i, 100\right) \cdot n \]
                            8. lower-fma.f6461.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 \]
                          12. Applied rewrites61.0%

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

                          Alternative 14: 57.5% accurate, 6.3× speedup?

                          \[\begin{array}{l} \\ 100 \cdot \mathsf{fma}\left(i, n \cdot \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \end{array} \]
                          (FPCore (i n)
                           :precision binary64
                           (* 100.0 (fma i (* n (fma 0.16666666666666666 i 0.5)) n)))
                          double code(double i, double n) {
                          	return 100.0 * fma(i, (n * fma(0.16666666666666666, i, 0.5)), n);
                          }
                          
                          function code(i, n)
                          	return Float64(100.0 * fma(i, Float64(n * fma(0.16666666666666666, i, 0.5)), n))
                          end
                          
                          code[i_, n_] := N[(100.0 * N[(i * N[(n * N[(0.16666666666666666 * i + 0.5), $MachinePrecision]), $MachinePrecision] + n), $MachinePrecision]), $MachinePrecision]
                          
                          \begin{array}{l}
                          
                          \\
                          100 \cdot \mathsf{fma}\left(i, n \cdot \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right)
                          \end{array}
                          
                          Derivation
                          1. Initial program 29.0%

                            \[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 \frac{n \cdot \left(e^{i} - 1\right)}{\color{blue}{i}} \]
                            2. *-commutativeN/A

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

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

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

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

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

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

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

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

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

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

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

                              \[\leadsto 100 \cdot \mathsf{fma}\left(i, n \cdot \left(\frac{1}{6} \cdot i + \frac{1}{2}\right), n\right) \]
                            8. lower-fma.f6458.4

                              \[\leadsto 100 \cdot \mathsf{fma}\left(i, n \cdot \mathsf{fma}\left(0.16666666666666666, i, 0.5\right), n\right) \]
                          8. Applied rewrites58.4%

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

                          Alternative 15: 57.5% accurate, 8.1× speedup?

                          \[\begin{array}{l} \\ \mathsf{fma}\left(\mathsf{fma}\left(16.666666666666668, i, 50\right), i, 100\right) \cdot n \end{array} \]
                          (FPCore (i n)
                           :precision binary64
                           (* (fma (fma 16.666666666666668 i 50.0) i 100.0) n))
                          double code(double i, double n) {
                          	return fma(fma(16.666666666666668, i, 50.0), i, 100.0) * n;
                          }
                          
                          function code(i, n)
                          	return Float64(fma(fma(16.666666666666668, i, 50.0), i, 100.0) * n)
                          end
                          
                          code[i_, n_] := N[(N[(N[(16.666666666666668 * i + 50.0), $MachinePrecision] * i + 100.0), $MachinePrecision] * n), $MachinePrecision]
                          
                          \begin{array}{l}
                          
                          \\
                          \mathsf{fma}\left(\mathsf{fma}\left(16.666666666666668, i, 50\right), i, 100\right) \cdot n
                          \end{array}
                          
                          Derivation
                          1. Initial program 29.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 \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. lift-pow.f64N/A

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

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

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

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

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

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

                              \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
                            11. 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}} \]
                            12. 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}} \]
                            13. 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}} \]
                            14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                              \[\leadsto \left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n \]
                          9. Applied rewrites77.6%

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

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

                              \[\leadsto \left(i \cdot \left(50 + \frac{50}{3} \cdot i\right) + 100\right) \cdot n \]
                            2. *-commutativeN/A

                              \[\leadsto \left(\left(50 + \frac{50}{3} \cdot i\right) \cdot i + 100\right) \cdot n \]
                            3. lower-fma.f64N/A

                              \[\leadsto \mathsf{fma}\left(50 + \frac{50}{3} \cdot i, i, 100\right) \cdot n \]
                            4. +-commutativeN/A

                              \[\leadsto \mathsf{fma}\left(\frac{50}{3} \cdot i + 50, i, 100\right) \cdot n \]
                            5. lower-fma.f6458.4

                              \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(16.666666666666668, i, 50\right), i, 100\right) \cdot n \]
                          12. Applied rewrites58.4%

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

                          Alternative 16: 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 29.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 \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. lift-pow.f64N/A

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

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

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

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

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

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

                              \[\leadsto \frac{\color{blue}{100 \cdot \left({\left(1 + \frac{i}{n}\right)}^{n} - 1\right)}}{\frac{i}{n}} \]
                            11. 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}} \]
                            12. 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}} \]
                            13. 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}} \]
                            14. lower-log1p.f64N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                              \[\leadsto \left(100 \cdot \frac{\mathsf{expm1}\left(i\right)}{i}\right) \cdot n \]
                          9. Applied rewrites77.6%

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

                            \[\leadsto \left(100 + \color{blue}{50 \cdot i}\right) \cdot n \]
                          11. Step-by-step derivation
                            1. +-commutativeN/A

                              \[\leadsto \left(50 \cdot i + 100\right) \cdot n \]
                            2. lower-fma.f6455.7

                              \[\leadsto \mathsf{fma}\left(50, i, 100\right) \cdot n \]
                          12. Applied rewrites55.7%

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

                          Alternative 17: 49.8% 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;
                          }
                          
                          module fmin_fmax_functions
                              implicit none
                              private
                              public fmax
                              public fmin
                          
                              interface fmax
                                  module procedure fmax88
                                  module procedure fmax44
                                  module procedure fmax84
                                  module procedure fmax48
                              end interface
                              interface fmin
                                  module procedure fmin88
                                  module procedure fmin44
                                  module procedure fmin84
                                  module procedure fmin48
                              end interface
                          contains
                              real(8) function fmax88(x, y) result (res)
                                  real(8), intent (in) :: x
                                  real(8), intent (in) :: y
                                  res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                              end function
                              real(4) function fmax44(x, y) result (res)
                                  real(4), intent (in) :: x
                                  real(4), intent (in) :: y
                                  res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                              end function
                              real(8) function fmax84(x, y) result(res)
                                  real(8), intent (in) :: x
                                  real(4), intent (in) :: y
                                  res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                              end function
                              real(8) function fmax48(x, y) result(res)
                                  real(4), intent (in) :: x
                                  real(8), intent (in) :: y
                                  res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                              end function
                              real(8) function fmin88(x, y) result (res)
                                  real(8), intent (in) :: x
                                  real(8), intent (in) :: y
                                  res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                              end function
                              real(4) function fmin44(x, y) result (res)
                                  real(4), intent (in) :: x
                                  real(4), intent (in) :: y
                                  res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                              end function
                              real(8) function fmin84(x, y) result(res)
                                  real(8), intent (in) :: x
                                  real(4), intent (in) :: y
                                  res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                              end function
                              real(8) function fmin48(x, y) result(res)
                                  real(4), intent (in) :: x
                                  real(8), intent (in) :: y
                                  res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                              end function
                          end module
                          
                          real(8) function code(i, n)
                          use fmin_fmax_functions
                              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 29.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 \color{blue}{n} \]
                          4. Step-by-step derivation
                            1. Applied rewrites49.6%

                              \[\leadsto 100 \cdot \color{blue}{n} \]
                            2. Add Preprocessing

                            Reproduce

                            ?
                            herbie shell --seed 2025085 
                            (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))))