Falkner and Boettcher, Appendix A

Percentage Accurate: 90.2% → 98.9%
Time: 12.1s
Alternatives: 14
Speedup: 1.2×

Specification

?
\[\begin{array}{l} \\ \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))
double code(double a, double k, double m) {
	return (a * pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
real(8) function code(a, k, m)
    real(8), intent (in) :: a
    real(8), intent (in) :: k
    real(8), intent (in) :: m
    code = (a * (k ** m)) / ((1.0d0 + (10.0d0 * k)) + (k * k))
end function
public static double code(double a, double k, double m) {
	return (a * Math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
def code(a, k, m):
	return (a * math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k))
function code(a, k, m)
	return Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(10.0 * k)) + Float64(k * k)))
end
function tmp = code(a, k, m)
	tmp = (a * (k ^ m)) / ((1.0 + (10.0 * k)) + (k * k));
end
code[a_, k_, m_] := N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(10.0 * k), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\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 14 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: 90.2% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))
double code(double a, double k, double m) {
	return (a * pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
real(8) function code(a, k, m)
    real(8), intent (in) :: a
    real(8), intent (in) :: k
    real(8), intent (in) :: m
    code = (a * (k ** m)) / ((1.0d0 + (10.0d0 * k)) + (k * k))
end function
public static double code(double a, double k, double m) {
	return (a * Math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
def code(a, k, m):
	return (a * math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k))
function code(a, k, m)
	return Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(10.0 * k)) + Float64(k * k)))
end
function tmp = code(a, k, m)
	tmp = (a * (k ^ m)) / ((1.0 + (10.0 * k)) + (k * k));
end
code[a_, k_, m_] := N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(10.0 * k), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\end{array}

Alternative 1: 98.9% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := a \cdot {k}^{m}\\ \mathbf{if}\;k \leq 3.45 \cdot 10^{-10}:\\ \;\;\;\;t\_0\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{t\_0}{k}}{k}\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (let* ((t_0 (* a (pow k m)))) (if (<= k 3.45e-10) t_0 (/ (/ t_0 k) k))))
double code(double a, double k, double m) {
	double t_0 = a * pow(k, m);
	double tmp;
	if (k <= 3.45e-10) {
		tmp = t_0;
	} else {
		tmp = (t_0 / k) / k;
	}
	return tmp;
}
real(8) function code(a, k, m)
    real(8), intent (in) :: a
    real(8), intent (in) :: k
    real(8), intent (in) :: m
    real(8) :: t_0
    real(8) :: tmp
    t_0 = a * (k ** m)
    if (k <= 3.45d-10) then
        tmp = t_0
    else
        tmp = (t_0 / k) / k
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double t_0 = a * Math.pow(k, m);
	double tmp;
	if (k <= 3.45e-10) {
		tmp = t_0;
	} else {
		tmp = (t_0 / k) / k;
	}
	return tmp;
}
def code(a, k, m):
	t_0 = a * math.pow(k, m)
	tmp = 0
	if k <= 3.45e-10:
		tmp = t_0
	else:
		tmp = (t_0 / k) / k
	return tmp
function code(a, k, m)
	t_0 = Float64(a * (k ^ m))
	tmp = 0.0
	if (k <= 3.45e-10)
		tmp = t_0;
	else
		tmp = Float64(Float64(t_0 / k) / k);
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	t_0 = a * (k ^ m);
	tmp = 0.0;
	if (k <= 3.45e-10)
		tmp = t_0;
	else
		tmp = (t_0 / k) / k;
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := Block[{t$95$0 = N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[k, 3.45e-10], t$95$0, N[(N[(t$95$0 / k), $MachinePrecision] / k), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := a \cdot {k}^{m}\\
\mathbf{if}\;k \leq 3.45 \cdot 10^{-10}:\\
\;\;\;\;t\_0\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{t\_0}{k}}{k}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if k < 3.44999999999999998e-10

    1. Initial program 94.4%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Add Preprocessing
    3. Taylor expanded in k around 0

      \[\leadsto \color{blue}{a \cdot {k}^{m}} \]
    4. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto \color{blue}{a \cdot {k}^{m}} \]
      2. lower-pow.f64100.0

        \[\leadsto a \cdot \color{blue}{{k}^{m}} \]
    5. Simplified100.0%

      \[\leadsto \color{blue}{a \cdot {k}^{m}} \]

    if 3.44999999999999998e-10 < k

    1. Initial program 85.4%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Add Preprocessing
    3. Taylor expanded in k around inf

      \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{{k}^{2}}} \]
    4. Step-by-step derivation
      1. unpow2N/A

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{k \cdot k}} \]
      2. lower-*.f6482.5

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{k \cdot k}} \]
    5. Simplified82.5%

      \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{k \cdot k}} \]
    6. Step-by-step derivation
      1. lift-pow.f64N/A

        \[\leadsto \frac{a \cdot \color{blue}{{k}^{m}}}{k \cdot k} \]
      2. lift-*.f64N/A

        \[\leadsto \frac{\color{blue}{a \cdot {k}^{m}}}{k \cdot k} \]
      3. associate-/r*N/A

        \[\leadsto \color{blue}{\frac{\frac{a \cdot {k}^{m}}{k}}{k}} \]
      4. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{\frac{a \cdot {k}^{m}}{k}}{k}} \]
      5. lower-/.f6497.0

        \[\leadsto \frac{\color{blue}{\frac{a \cdot {k}^{m}}{k}}}{k} \]
    7. Applied egg-rr97.0%

      \[\leadsto \color{blue}{\frac{\frac{a \cdot {k}^{m}}{k}}{k}} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 2: 61.0% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k}\\ \mathbf{if}\;t\_0 \leq 0:\\ \;\;\;\;\frac{a}{\mathsf{fma}\left(k \cdot \left(k \cdot \mathsf{fma}\left(k, \frac{100}{k \cdot k}, -k\right)\right), \frac{1}{10 - k}, 1\right)}\\ \mathbf{elif}\;t\_0 \leq 10^{+301}:\\ \;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\ \mathbf{elif}\;t\_0 \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left(a, \frac{-10 + \frac{99}{k}}{k}, a\right)}{k \cdot k}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(99, k, -10\right), a\right)\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (let* ((t_0 (/ (* a (pow k m)) (+ (+ 1.0 (* k 10.0)) (* k k)))))
   (if (<= t_0 0.0)
     (/
      a
      (fma (* k (* k (fma k (/ 100.0 (* k k)) (- k)))) (/ 1.0 (- 10.0 k)) 1.0))
     (if (<= t_0 1e+301)
       (/ a (fma k 10.0 (fma k k 1.0)))
       (if (<= t_0 INFINITY)
         (/ (fma a (/ (+ -10.0 (/ 99.0 k)) k) a) (* k k))
         (fma k (* a (fma 99.0 k -10.0)) a))))))
double code(double a, double k, double m) {
	double t_0 = (a * pow(k, m)) / ((1.0 + (k * 10.0)) + (k * k));
	double tmp;
	if (t_0 <= 0.0) {
		tmp = a / fma((k * (k * fma(k, (100.0 / (k * k)), -k))), (1.0 / (10.0 - k)), 1.0);
	} else if (t_0 <= 1e+301) {
		tmp = a / fma(k, 10.0, fma(k, k, 1.0));
	} else if (t_0 <= ((double) INFINITY)) {
		tmp = fma(a, ((-10.0 + (99.0 / k)) / k), a) / (k * k);
	} else {
		tmp = fma(k, (a * fma(99.0, k, -10.0)), a);
	}
	return tmp;
}
function code(a, k, m)
	t_0 = Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(k * 10.0)) + Float64(k * k)))
	tmp = 0.0
	if (t_0 <= 0.0)
		tmp = Float64(a / fma(Float64(k * Float64(k * fma(k, Float64(100.0 / Float64(k * k)), Float64(-k)))), Float64(1.0 / Float64(10.0 - k)), 1.0));
	elseif (t_0 <= 1e+301)
		tmp = Float64(a / fma(k, 10.0, fma(k, k, 1.0)));
	elseif (t_0 <= Inf)
		tmp = Float64(fma(a, Float64(Float64(-10.0 + Float64(99.0 / k)) / k), a) / Float64(k * k));
	else
		tmp = fma(k, Float64(a * fma(99.0, k, -10.0)), a);
	end
	return tmp
end
code[a_, k_, m_] := Block[{t$95$0 = N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(k * 10.0), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, 0.0], N[(a / N[(N[(k * N[(k * N[(k * N[(100.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + (-k)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(1.0 / N[(10.0 - k), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+301], N[(a / N[(k * 10.0 + N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(N[(a * N[(N[(-10.0 + N[(99.0 / k), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision] + a), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(99.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k}\\
\mathbf{if}\;t\_0 \leq 0:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k \cdot \left(k \cdot \mathsf{fma}\left(k, \frac{100}{k \cdot k}, -k\right)\right), \frac{1}{10 - k}, 1\right)}\\

\mathbf{elif}\;t\_0 \leq 10^{+301}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\

\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(a, \frac{-10 + \frac{99}{k}}{k}, a\right)}{k \cdot k}\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(99, k, -10\right), a\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 4 regimes
  2. if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0

    1. Initial program 96.9%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Add Preprocessing
    3. Taylor expanded in m around 0

      \[\leadsto \color{blue}{\frac{a}{1 + \left(10 \cdot k + {k}^{2}\right)}} \]
    4. Step-by-step derivation
      1. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{a}{1 + \left(10 \cdot k + {k}^{2}\right)}} \]
      2. unpow2N/A

        \[\leadsto \frac{a}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      3. distribute-rgt-inN/A

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
      4. +-commutativeN/A

        \[\leadsto \frac{a}{\color{blue}{k \cdot \left(10 + k\right) + 1}} \]
      5. metadata-evalN/A

        \[\leadsto \frac{a}{k \cdot \left(\color{blue}{10 \cdot 1} + k\right) + 1} \]
      6. lft-mult-inverseN/A

        \[\leadsto \frac{a}{k \cdot \left(10 \cdot \color{blue}{\left(\frac{1}{k} \cdot k\right)} + k\right) + 1} \]
      7. associate-*l*N/A

        \[\leadsto \frac{a}{k \cdot \left(\color{blue}{\left(10 \cdot \frac{1}{k}\right) \cdot k} + k\right) + 1} \]
      8. *-lft-identityN/A

        \[\leadsto \frac{a}{k \cdot \left(\left(10 \cdot \frac{1}{k}\right) \cdot k + \color{blue}{1 \cdot k}\right) + 1} \]
      9. distribute-rgt-inN/A

        \[\leadsto \frac{a}{k \cdot \color{blue}{\left(k \cdot \left(10 \cdot \frac{1}{k} + 1\right)\right)} + 1} \]
      10. +-commutativeN/A

        \[\leadsto \frac{a}{k \cdot \left(k \cdot \color{blue}{\left(1 + 10 \cdot \frac{1}{k}\right)}\right) + 1} \]
      11. *-commutativeN/A

        \[\leadsto \frac{a}{k \cdot \color{blue}{\left(\left(1 + 10 \cdot \frac{1}{k}\right) \cdot k\right)} + 1} \]
      12. lower-fma.f64N/A

        \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, \left(1 + 10 \cdot \frac{1}{k}\right) \cdot k, 1\right)}} \]
      13. *-commutativeN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{k \cdot \left(1 + 10 \cdot \frac{1}{k}\right)}, 1\right)} \]
      14. +-commutativeN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, k \cdot \color{blue}{\left(10 \cdot \frac{1}{k} + 1\right)}, 1\right)} \]
      15. distribute-rgt-inN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{\left(10 \cdot \frac{1}{k}\right) \cdot k + 1 \cdot k}, 1\right)} \]
      16. associate-*l*N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10 \cdot \left(\frac{1}{k} \cdot k\right)} + 1 \cdot k, 1\right)} \]
      17. lft-mult-inverseN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, 10 \cdot \color{blue}{1} + 1 \cdot k, 1\right)} \]
      18. metadata-evalN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10} + 1 \cdot k, 1\right)} \]
      19. *-lft-identityN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, 10 + \color{blue}{k}, 1\right)} \]
      20. lower-+.f6447.4

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10 + k}, 1\right)} \]
    5. Simplified47.4%

      \[\leadsto \color{blue}{\frac{a}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
    6. Step-by-step derivation
      1. lift-+.f64N/A

        \[\leadsto \frac{a}{k \cdot \color{blue}{\left(10 + k\right)} + 1} \]
      2. *-commutativeN/A

        \[\leadsto \frac{a}{\color{blue}{\left(10 + k\right) \cdot k} + 1} \]
      3. lift-+.f64N/A

        \[\leadsto \frac{a}{\color{blue}{\left(10 + k\right)} \cdot k + 1} \]
      4. flip-+N/A

        \[\leadsto \frac{a}{\color{blue}{\frac{10 \cdot 10 - k \cdot k}{10 - k}} \cdot k + 1} \]
      5. associate-*l/N/A

        \[\leadsto \frac{a}{\color{blue}{\frac{\left(10 \cdot 10 - k \cdot k\right) \cdot k}{10 - k}} + 1} \]
      6. div-invN/A

        \[\leadsto \frac{a}{\color{blue}{\left(\left(10 \cdot 10 - k \cdot k\right) \cdot k\right) \cdot \frac{1}{10 - k}} + 1} \]
      7. lower-fma.f64N/A

        \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(\left(10 \cdot 10 - k \cdot k\right) \cdot k, \frac{1}{10 - k}, 1\right)}} \]
      8. lower-*.f64N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\color{blue}{\left(10 \cdot 10 - k \cdot k\right) \cdot k}, \frac{1}{10 - k}, 1\right)} \]
      9. lift-*.f64N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(10 \cdot 10 - \color{blue}{k \cdot k}\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      10. lower--.f64N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\color{blue}{\left(10 \cdot 10 - k \cdot k\right)} \cdot k, \frac{1}{10 - k}, 1\right)} \]
      11. metadata-evalN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(\color{blue}{100} - k \cdot k\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      12. lower-/.f64N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(100 - k \cdot k\right) \cdot k, \color{blue}{\frac{1}{10 - k}}, 1\right)} \]
      13. lower--.f6448.7

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(100 - k \cdot k\right) \cdot k, \frac{1}{\color{blue}{10 - k}}, 1\right)} \]
    7. Applied egg-rr48.7%

      \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(\left(100 - k \cdot k\right) \cdot k, \frac{1}{10 - k}, 1\right)}} \]
    8. Taylor expanded in k around inf

      \[\leadsto \frac{a}{\mathsf{fma}\left(\color{blue}{\left({k}^{2} \cdot \left(100 \cdot \frac{1}{{k}^{2}} - 1\right)\right)} \cdot k, \frac{1}{10 - k}, 1\right)} \]
    9. Step-by-step derivation
      1. unpow2N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(\color{blue}{\left(k \cdot k\right)} \cdot \left(100 \cdot \frac{1}{{k}^{2}} - 1\right)\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      2. associate-*l*N/A

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

        \[\leadsto \frac{a}{\mathsf{fma}\left(\color{blue}{\left(k \cdot \left(k \cdot \left(100 \cdot \frac{1}{{k}^{2}} - 1\right)\right)\right)} \cdot k, \frac{1}{10 - k}, 1\right)} \]
      4. sub-negN/A

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

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(k \cdot \left(k \cdot \left(100 \cdot \frac{1}{{k}^{2}} + \color{blue}{-1}\right)\right)\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      6. distribute-lft-inN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(k \cdot \color{blue}{\left(k \cdot \left(100 \cdot \frac{1}{{k}^{2}}\right) + k \cdot -1\right)}\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      7. *-commutativeN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(k \cdot \left(k \cdot \left(100 \cdot \frac{1}{{k}^{2}}\right) + \color{blue}{-1 \cdot k}\right)\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      8. lower-fma.f64N/A

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

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

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

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(k \cdot \mathsf{fma}\left(k, \color{blue}{\frac{100}{{k}^{2}}}, -1 \cdot k\right)\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      12. unpow2N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(k \cdot \mathsf{fma}\left(k, \frac{100}{\color{blue}{k \cdot k}}, -1 \cdot k\right)\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      13. lower-*.f64N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(k \cdot \mathsf{fma}\left(k, \frac{100}{\color{blue}{k \cdot k}}, -1 \cdot k\right)\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      14. neg-mul-1N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(k \cdot \mathsf{fma}\left(k, \frac{100}{k \cdot k}, \color{blue}{\mathsf{neg}\left(k\right)}\right)\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
      15. lower-neg.f6455.1

        \[\leadsto \frac{a}{\mathsf{fma}\left(\left(k \cdot \mathsf{fma}\left(k, \frac{100}{k \cdot k}, \color{blue}{-k}\right)\right) \cdot k, \frac{1}{10 - k}, 1\right)} \]
    10. Simplified55.1%

      \[\leadsto \frac{a}{\mathsf{fma}\left(\color{blue}{\left(k \cdot \mathsf{fma}\left(k, \frac{100}{k \cdot k}, -k\right)\right)} \cdot k, \frac{1}{10 - k}, 1\right)} \]

    if 0.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.00000000000000005e301

    1. Initial program 99.8%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Add Preprocessing
    3. Taylor expanded in m around 0

      \[\leadsto \color{blue}{\frac{a}{1 + \left(10 \cdot k + {k}^{2}\right)}} \]
    4. Step-by-step derivation
      1. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{a}{1 + \left(10 \cdot k + {k}^{2}\right)}} \]
      2. unpow2N/A

        \[\leadsto \frac{a}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      3. distribute-rgt-inN/A

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
      4. +-commutativeN/A

        \[\leadsto \frac{a}{\color{blue}{k \cdot \left(10 + k\right) + 1}} \]
      5. metadata-evalN/A

        \[\leadsto \frac{a}{k \cdot \left(\color{blue}{10 \cdot 1} + k\right) + 1} \]
      6. lft-mult-inverseN/A

        \[\leadsto \frac{a}{k \cdot \left(10 \cdot \color{blue}{\left(\frac{1}{k} \cdot k\right)} + k\right) + 1} \]
      7. associate-*l*N/A

        \[\leadsto \frac{a}{k \cdot \left(\color{blue}{\left(10 \cdot \frac{1}{k}\right) \cdot k} + k\right) + 1} \]
      8. *-lft-identityN/A

        \[\leadsto \frac{a}{k \cdot \left(\left(10 \cdot \frac{1}{k}\right) \cdot k + \color{blue}{1 \cdot k}\right) + 1} \]
      9. distribute-rgt-inN/A

        \[\leadsto \frac{a}{k \cdot \color{blue}{\left(k \cdot \left(10 \cdot \frac{1}{k} + 1\right)\right)} + 1} \]
      10. +-commutativeN/A

        \[\leadsto \frac{a}{k \cdot \left(k \cdot \color{blue}{\left(1 + 10 \cdot \frac{1}{k}\right)}\right) + 1} \]
      11. *-commutativeN/A

        \[\leadsto \frac{a}{k \cdot \color{blue}{\left(\left(1 + 10 \cdot \frac{1}{k}\right) \cdot k\right)} + 1} \]
      12. lower-fma.f64N/A

        \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, \left(1 + 10 \cdot \frac{1}{k}\right) \cdot k, 1\right)}} \]
      13. *-commutativeN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{k \cdot \left(1 + 10 \cdot \frac{1}{k}\right)}, 1\right)} \]
      14. +-commutativeN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, k \cdot \color{blue}{\left(10 \cdot \frac{1}{k} + 1\right)}, 1\right)} \]
      15. distribute-rgt-inN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{\left(10 \cdot \frac{1}{k}\right) \cdot k + 1 \cdot k}, 1\right)} \]
      16. associate-*l*N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10 \cdot \left(\frac{1}{k} \cdot k\right)} + 1 \cdot k, 1\right)} \]
      17. lft-mult-inverseN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, 10 \cdot \color{blue}{1} + 1 \cdot k, 1\right)} \]
      18. metadata-evalN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10} + 1 \cdot k, 1\right)} \]
      19. *-lft-identityN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, 10 + \color{blue}{k}, 1\right)} \]
      20. lower-+.f6497.3

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10 + k}, 1\right)} \]
    5. Simplified97.3%

      \[\leadsto \color{blue}{\frac{a}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
    6. Step-by-step derivation
      1. distribute-lft-inN/A

        \[\leadsto \frac{a}{\color{blue}{\left(k \cdot 10 + k \cdot k\right)} + 1} \]
      2. lift-*.f64N/A

        \[\leadsto \frac{a}{\left(k \cdot 10 + \color{blue}{k \cdot k}\right) + 1} \]
      3. associate-+r+N/A

        \[\leadsto \frac{a}{\color{blue}{k \cdot 10 + \left(k \cdot k + 1\right)}} \]
      4. lift-*.f64N/A

        \[\leadsto \frac{a}{k \cdot 10 + \left(\color{blue}{k \cdot k} + 1\right)} \]
      5. lift-fma.f64N/A

        \[\leadsto \frac{a}{k \cdot 10 + \color{blue}{\mathsf{fma}\left(k, k, 1\right)}} \]
      6. lift-fma.f6497.3

        \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}} \]
    7. Applied egg-rr97.3%

      \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}} \]

    if 1.00000000000000005e301 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0

    1. Initial program 100.0%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Add Preprocessing
    3. Taylor expanded in m around 0

      \[\leadsto \color{blue}{\frac{a}{1 + \left(10 \cdot k + {k}^{2}\right)}} \]
    4. Step-by-step derivation
      1. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{a}{1 + \left(10 \cdot k + {k}^{2}\right)}} \]
      2. unpow2N/A

        \[\leadsto \frac{a}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      3. distribute-rgt-inN/A

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
      4. +-commutativeN/A

        \[\leadsto \frac{a}{\color{blue}{k \cdot \left(10 + k\right) + 1}} \]
      5. metadata-evalN/A

        \[\leadsto \frac{a}{k \cdot \left(\color{blue}{10 \cdot 1} + k\right) + 1} \]
      6. lft-mult-inverseN/A

        \[\leadsto \frac{a}{k \cdot \left(10 \cdot \color{blue}{\left(\frac{1}{k} \cdot k\right)} + k\right) + 1} \]
      7. associate-*l*N/A

        \[\leadsto \frac{a}{k \cdot \left(\color{blue}{\left(10 \cdot \frac{1}{k}\right) \cdot k} + k\right) + 1} \]
      8. *-lft-identityN/A

        \[\leadsto \frac{a}{k \cdot \left(\left(10 \cdot \frac{1}{k}\right) \cdot k + \color{blue}{1 \cdot k}\right) + 1} \]
      9. distribute-rgt-inN/A

        \[\leadsto \frac{a}{k \cdot \color{blue}{\left(k \cdot \left(10 \cdot \frac{1}{k} + 1\right)\right)} + 1} \]
      10. +-commutativeN/A

        \[\leadsto \frac{a}{k \cdot \left(k \cdot \color{blue}{\left(1 + 10 \cdot \frac{1}{k}\right)}\right) + 1} \]
      11. *-commutativeN/A

        \[\leadsto \frac{a}{k \cdot \color{blue}{\left(\left(1 + 10 \cdot \frac{1}{k}\right) \cdot k\right)} + 1} \]
      12. lower-fma.f64N/A

        \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, \left(1 + 10 \cdot \frac{1}{k}\right) \cdot k, 1\right)}} \]
      13. *-commutativeN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{k \cdot \left(1 + 10 \cdot \frac{1}{k}\right)}, 1\right)} \]
      14. +-commutativeN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, k \cdot \color{blue}{\left(10 \cdot \frac{1}{k} + 1\right)}, 1\right)} \]
      15. distribute-rgt-inN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{\left(10 \cdot \frac{1}{k}\right) \cdot k + 1 \cdot k}, 1\right)} \]
      16. associate-*l*N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10 \cdot \left(\frac{1}{k} \cdot k\right)} + 1 \cdot k, 1\right)} \]
      17. lft-mult-inverseN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, 10 \cdot \color{blue}{1} + 1 \cdot k, 1\right)} \]
      18. metadata-evalN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10} + 1 \cdot k, 1\right)} \]
      19. *-lft-identityN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, 10 + \color{blue}{k}, 1\right)} \]
      20. lower-+.f644.3

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10 + k}, 1\right)} \]
    5. Simplified4.3%

      \[\leadsto \color{blue}{\frac{a}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
    6. Step-by-step derivation
      1. distribute-lft-inN/A

        \[\leadsto \frac{a}{\color{blue}{\left(k \cdot 10 + k \cdot k\right)} + 1} \]
      2. lift-*.f64N/A

        \[\leadsto \frac{a}{\left(k \cdot 10 + \color{blue}{k \cdot k}\right) + 1} \]
      3. associate-+r+N/A

        \[\leadsto \frac{a}{\color{blue}{k \cdot 10 + \left(k \cdot k + 1\right)}} \]
      4. lift-*.f64N/A

        \[\leadsto \frac{a}{k \cdot 10 + \left(\color{blue}{k \cdot k} + 1\right)} \]
      5. lift-fma.f64N/A

        \[\leadsto \frac{a}{k \cdot 10 + \color{blue}{\mathsf{fma}\left(k, k, 1\right)}} \]
      6. lift-fma.f644.3

        \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}} \]
    7. Applied egg-rr4.3%

      \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}} \]
    8. Taylor expanded in k around inf

      \[\leadsto \color{blue}{\frac{\left(a + -1 \cdot \frac{a + -100 \cdot a}{{k}^{2}}\right) - 10 \cdot \frac{a}{k}}{{k}^{2}}} \]
    9. Simplified44.2%

      \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(a, \frac{-10 + \frac{99}{k}}{k}, a\right)}{k \cdot k}} \]

    if +inf.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k)))

    1. Initial program 0.0%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Add Preprocessing
    3. Taylor expanded in m around 0

      \[\leadsto \color{blue}{\frac{a}{1 + \left(10 \cdot k + {k}^{2}\right)}} \]
    4. Step-by-step derivation
      1. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{a}{1 + \left(10 \cdot k + {k}^{2}\right)}} \]
      2. unpow2N/A

        \[\leadsto \frac{a}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      3. distribute-rgt-inN/A

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
      4. +-commutativeN/A

        \[\leadsto \frac{a}{\color{blue}{k \cdot \left(10 + k\right) + 1}} \]
      5. metadata-evalN/A

        \[\leadsto \frac{a}{k \cdot \left(\color{blue}{10 \cdot 1} + k\right) + 1} \]
      6. lft-mult-inverseN/A

        \[\leadsto \frac{a}{k \cdot \left(10 \cdot \color{blue}{\left(\frac{1}{k} \cdot k\right)} + k\right) + 1} \]
      7. associate-*l*N/A

        \[\leadsto \frac{a}{k \cdot \left(\color{blue}{\left(10 \cdot \frac{1}{k}\right) \cdot k} + k\right) + 1} \]
      8. *-lft-identityN/A

        \[\leadsto \frac{a}{k \cdot \left(\left(10 \cdot \frac{1}{k}\right) \cdot k + \color{blue}{1 \cdot k}\right) + 1} \]
      9. distribute-rgt-inN/A

        \[\leadsto \frac{a}{k \cdot \color{blue}{\left(k \cdot \left(10 \cdot \frac{1}{k} + 1\right)\right)} + 1} \]
      10. +-commutativeN/A

        \[\leadsto \frac{a}{k \cdot \left(k \cdot \color{blue}{\left(1 + 10 \cdot \frac{1}{k}\right)}\right) + 1} \]
      11. *-commutativeN/A

        \[\leadsto \frac{a}{k \cdot \color{blue}{\left(\left(1 + 10 \cdot \frac{1}{k}\right) \cdot k\right)} + 1} \]
      12. lower-fma.f64N/A

        \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, \left(1 + 10 \cdot \frac{1}{k}\right) \cdot k, 1\right)}} \]
      13. *-commutativeN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{k \cdot \left(1 + 10 \cdot \frac{1}{k}\right)}, 1\right)} \]
      14. +-commutativeN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, k \cdot \color{blue}{\left(10 \cdot \frac{1}{k} + 1\right)}, 1\right)} \]
      15. distribute-rgt-inN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{\left(10 \cdot \frac{1}{k}\right) \cdot k + 1 \cdot k}, 1\right)} \]
      16. associate-*l*N/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10 \cdot \left(\frac{1}{k} \cdot k\right)} + 1 \cdot k, 1\right)} \]
      17. lft-mult-inverseN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, 10 \cdot \color{blue}{1} + 1 \cdot k, 1\right)} \]
      18. metadata-evalN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10} + 1 \cdot k, 1\right)} \]
      19. *-lft-identityN/A

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, 10 + \color{blue}{k}, 1\right)} \]
      20. lower-+.f642.0

        \[\leadsto \frac{a}{\mathsf{fma}\left(k, \color{blue}{10 + k}, 1\right)} \]
    5. Simplified2.0%

      \[\leadsto \color{blue}{\frac{a}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
    6. Step-by-step derivation
      1. distribute-lft-inN/A

        \[\leadsto \frac{a}{\color{blue}{\left(k \cdot 10 + k \cdot k\right)} + 1} \]
      2. lift-*.f64N/A

        \[\leadsto \frac{a}{\left(k \cdot 10 + \color{blue}{k \cdot k}\right) + 1} \]
      3. associate-+r+N/A

        \[\leadsto \frac{a}{\color{blue}{k \cdot 10 + \left(k \cdot k + 1\right)}} \]
      4. lift-*.f64N/A

        \[\leadsto \frac{a}{k \cdot 10 + \left(\color{blue}{k \cdot k} + 1\right)} \]
      5. lift-fma.f64N/A

        \[\leadsto \frac{a}{k \cdot 10 + \color{blue}{\mathsf{fma}\left(k, k, 1\right)}} \]
      6. lift-fma.f642.0

        \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}} \]
    7. Applied egg-rr2.0%

      \[\leadsto \frac{a}{\color{blue}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}} \]
    8. Taylor expanded in k around 0

      \[\leadsto \color{blue}{a + k \cdot \left(-1 \cdot \left(k \cdot \left(a + -100 \cdot a\right)\right) - 10 \cdot a\right)} \]
    9. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \color{blue}{k \cdot \left(-1 \cdot \left(k \cdot \left(a + -100 \cdot a\right)\right) - 10 \cdot a\right) + a} \]
      2. lower-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(k, -1 \cdot \left(k \cdot \left(a + -100 \cdot a\right)\right) - 10 \cdot a, a\right)} \]
      3. distribute-rgt1-inN/A

        \[\leadsto \mathsf{fma}\left(k, -1 \cdot \left(k \cdot \color{blue}{\left(\left(-100 + 1\right) \cdot a\right)}\right) - 10 \cdot a, a\right) \]
      4. metadata-evalN/A

        \[\leadsto \mathsf{fma}\left(k, -1 \cdot \left(k \cdot \left(\color{blue}{-99} \cdot a\right)\right) - 10 \cdot a, a\right) \]
      5. *-commutativeN/A

        \[\leadsto \mathsf{fma}\left(k, -1 \cdot \color{blue}{\left(\left(-99 \cdot a\right) \cdot k\right)} - 10 \cdot a, a\right) \]
      6. associate-*r*N/A

        \[\leadsto \mathsf{fma}\left(k, -1 \cdot \color{blue}{\left(-99 \cdot \left(a \cdot k\right)\right)} - 10 \cdot a, a\right) \]
      7. associate-*r*N/A

        \[\leadsto \mathsf{fma}\left(k, \color{blue}{\left(-1 \cdot -99\right) \cdot \left(a \cdot k\right)} - 10 \cdot a, a\right) \]
      8. metadata-evalN/A

        \[\leadsto \mathsf{fma}\left(k, \color{blue}{99} \cdot \left(a \cdot k\right) - 10 \cdot a, a\right) \]
      9. cancel-sign-sub-invN/A

        \[\leadsto \mathsf{fma}\left(k, \color{blue}{99 \cdot \left(a \cdot k\right) + \left(\mathsf{neg}\left(10\right)\right) \cdot a}, a\right) \]
      10. metadata-evalN/A

        \[\leadsto \mathsf{fma}\left(k, 99 \cdot \left(a \cdot k\right) + \color{blue}{-10} \cdot a, a\right) \]
      11. *-commutativeN/A

        \[\leadsto \mathsf{fma}\left(k, 99 \cdot \color{blue}{\left(k \cdot a\right)} + -10 \cdot a, a\right) \]
      12. associate-*r*N/A

        \[\leadsto \mathsf{fma}\left(k, \color{blue}{\left(99 \cdot k\right) \cdot a} + -10 \cdot a, a\right) \]
      13. distribute-rgt-outN/A

        \[\leadsto \mathsf{fma}\left(k, \color{blue}{a \cdot \left(99 \cdot k + -10\right)}, a\right) \]
      14. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(k, \color{blue}{a \cdot \left(99 \cdot k + -10\right)}, a\right) \]
      15. lower-fma.f6478.4

        \[\leadsto \mathsf{fma}\left(k, a \cdot \color{blue}{\mathsf{fma}\left(99, k, -10\right)}, a\right) \]
    10. Simplified78.4%

      \[\leadsto \color{blue}{\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(99, k, -10\right), a\right)} \]
  3. Recombined 4 regimes into one program.
  4. Final simplification61.0%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k} \leq 0:\\ \;\;\;\;\frac{a}{\mathsf{fma}\left(k \cdot \left(k \cdot \mathsf{fma}\left(k, \frac{100}{k \cdot k}, -k\right)\right), \frac{1}{10 - k}, 1\right)}\\ \mathbf{elif}\;\frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k} \leq 10^{+301}:\\ \;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\ \mathbf{elif}\;\frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k} \leq \infty:\\ \;\;\;\;\frac{\mathsf{fma}\left(a, \frac{-10 + \frac{99}{k}}{k}, a\right)}{k \cdot k}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(99, k, -10\right), a\right)\\ \end{array} \]
  5. Add Preprocessing

Reproduce

?
herbie shell --seed 2024218 
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  :precision binary64
  (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))