Falkner and Boettcher, Appendix A

Percentage Accurate: 90.5% → 97.0%
Time: 8.9s
Alternatives: 12
Speedup: 1.1×

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 12 alternatives:

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

Initial Program: 90.5% 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: 97.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;m \leq 5.4 \cdot 10^{-36}:\\ \;\;\;\;a \cdot \frac{-{k}^{m}}{-1 - k \cdot \left(k + 10\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (if (<= m 5.4e-36)
   (* a (/ (- (pow k m)) (- -1.0 (* k (+ k 10.0)))))
   (/ a (pow k (- m)))))
double code(double a, double k, double m) {
	double tmp;
	if (m <= 5.4e-36) {
		tmp = a * (-pow(k, m) / (-1.0 - (k * (k + 10.0))));
	} else {
		tmp = a / pow(k, -m);
	}
	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) :: tmp
    if (m <= 5.4d-36) then
        tmp = a * (-(k ** m) / ((-1.0d0) - (k * (k + 10.0d0))))
    else
        tmp = a / (k ** -m)
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double tmp;
	if (m <= 5.4e-36) {
		tmp = a * (-Math.pow(k, m) / (-1.0 - (k * (k + 10.0))));
	} else {
		tmp = a / Math.pow(k, -m);
	}
	return tmp;
}
def code(a, k, m):
	tmp = 0
	if m <= 5.4e-36:
		tmp = a * (-math.pow(k, m) / (-1.0 - (k * (k + 10.0))))
	else:
		tmp = a / math.pow(k, -m)
	return tmp
function code(a, k, m)
	tmp = 0.0
	if (m <= 5.4e-36)
		tmp = Float64(a * Float64(Float64(-(k ^ m)) / Float64(-1.0 - Float64(k * Float64(k + 10.0)))));
	else
		tmp = Float64(a / (k ^ Float64(-m)));
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	tmp = 0.0;
	if (m <= 5.4e-36)
		tmp = a * (-(k ^ m) / (-1.0 - (k * (k + 10.0))));
	else
		tmp = a / (k ^ -m);
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := If[LessEqual[m, 5.4e-36], N[(a * N[((-N[Power[k, m], $MachinePrecision]) / N[(-1.0 - N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a / N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;m \leq 5.4 \cdot 10^{-36}:\\
\;\;\;\;a \cdot \frac{-{k}^{m}}{-1 - k \cdot \left(k + 10\right)}\\

\mathbf{else}:\\
\;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if m < 5.40000000000000015e-36

    1. Initial program 97.5%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg97.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+97.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg97.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out97.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified97.5%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Step-by-step derivation
      1. frac-2neg97.5%

        \[\leadsto \color{blue}{\frac{-a \cdot {k}^{m}}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      2. div-inv97.5%

        \[\leadsto \color{blue}{\left(-a \cdot {k}^{m}\right) \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      3. distribute-rgt-neg-in97.5%

        \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right)} \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)} \]
      4. +-commutative97.5%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\left(k \cdot \left(10 + k\right) + 1\right)}} \]
      5. fma-def97.5%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
      6. +-commutative97.5%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, \color{blue}{k + 10}, 1\right)} \]
    5. Applied egg-rr97.5%

      \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
    6. Step-by-step derivation
      1. associate-*l*97.5%

        \[\leadsto \color{blue}{a \cdot \left(\left(-{k}^{m}\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}\right)} \]
      2. associate-*r/97.5%

        \[\leadsto a \cdot \color{blue}{\frac{\left(-{k}^{m}\right) \cdot 1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
      3. *-rgt-identity97.5%

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

        \[\leadsto a \cdot \frac{-{k}^{m}}{-\color{blue}{\left(k \cdot \left(k + 10\right) + 1\right)}} \]
      5. +-commutative97.5%

        \[\leadsto a \cdot \frac{-{k}^{m}}{-\color{blue}{\left(1 + k \cdot \left(k + 10\right)\right)}} \]
      6. distribute-neg-in97.5%

        \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{\left(-1\right) + \left(-k \cdot \left(k + 10\right)\right)}} \]
      7. metadata-eval97.5%

        \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{-1} + \left(-k \cdot \left(k + 10\right)\right)} \]
      8. sub-neg97.5%

        \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{-1 - k \cdot \left(k + 10\right)}} \]
    7. Simplified97.5%

      \[\leadsto \color{blue}{a \cdot \frac{-{k}^{m}}{-1 - k \cdot \left(k + 10\right)}} \]

    if 5.40000000000000015e-36 < m

    1. Initial program 80.6%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified80.6%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Step-by-step derivation
      1. frac-2neg80.6%

        \[\leadsto \color{blue}{\frac{-a \cdot {k}^{m}}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      2. div-inv80.6%

        \[\leadsto \color{blue}{\left(-a \cdot {k}^{m}\right) \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      3. distribute-rgt-neg-in80.6%

        \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right)} \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)} \]
      4. +-commutative80.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\left(k \cdot \left(10 + k\right) + 1\right)}} \]
      5. fma-def80.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
      6. +-commutative80.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, \color{blue}{k + 10}, 1\right)} \]
    5. Applied egg-rr80.6%

      \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
    6. Step-by-step derivation
      1. associate-*r/80.6%

        \[\leadsto \color{blue}{\frac{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot 1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
      2. *-rgt-identity80.6%

        \[\leadsto \frac{\color{blue}{a \cdot \left(-{k}^{m}\right)}}{-\mathsf{fma}\left(k, k + 10, 1\right)} \]
      3. distribute-rgt-neg-out80.6%

        \[\leadsto \frac{\color{blue}{-a \cdot {k}^{m}}}{-\mathsf{fma}\left(k, k + 10, 1\right)} \]
      4. distribute-neg-frac80.6%

        \[\leadsto \color{blue}{-\frac{a \cdot {k}^{m}}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
      5. associate-/l*80.7%

        \[\leadsto -\color{blue}{\frac{a}{\frac{-\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}} \]
      6. distribute-neg-frac80.7%

        \[\leadsto \color{blue}{\frac{-a}{\frac{-\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}} \]
      7. fma-udef80.7%

        \[\leadsto \frac{-a}{\frac{-\color{blue}{\left(k \cdot \left(k + 10\right) + 1\right)}}{{k}^{m}}} \]
      8. +-commutative80.7%

        \[\leadsto \frac{-a}{\frac{-\color{blue}{\left(1 + k \cdot \left(k + 10\right)\right)}}{{k}^{m}}} \]
      9. distribute-neg-in80.7%

        \[\leadsto \frac{-a}{\frac{\color{blue}{\left(-1\right) + \left(-k \cdot \left(k + 10\right)\right)}}{{k}^{m}}} \]
      10. metadata-eval80.7%

        \[\leadsto \frac{-a}{\frac{\color{blue}{-1} + \left(-k \cdot \left(k + 10\right)\right)}{{k}^{m}}} \]
      11. sub-neg80.7%

        \[\leadsto \frac{-a}{\frac{\color{blue}{-1 - k \cdot \left(k + 10\right)}}{{k}^{m}}} \]
    7. Simplified80.7%

      \[\leadsto \color{blue}{\frac{-a}{\frac{-1 - k \cdot \left(k + 10\right)}{{k}^{m}}}} \]
    8. Taylor expanded in k around 0 100.0%

      \[\leadsto \frac{-a}{\color{blue}{\frac{-1}{{k}^{m}}}} \]
    9. Step-by-step derivation
      1. frac-2neg100.0%

        \[\leadsto \color{blue}{\frac{-\left(-a\right)}{-\frac{-1}{{k}^{m}}}} \]
      2. div-inv100.0%

        \[\leadsto \color{blue}{\left(-\left(-a\right)\right) \cdot \frac{1}{-\frac{-1}{{k}^{m}}}} \]
      3. remove-double-neg100.0%

        \[\leadsto \color{blue}{a} \cdot \frac{1}{-\frac{-1}{{k}^{m}}} \]
      4. distribute-neg-frac100.0%

        \[\leadsto a \cdot \frac{1}{\color{blue}{\frac{--1}{{k}^{m}}}} \]
      5. metadata-eval100.0%

        \[\leadsto a \cdot \frac{1}{\frac{\color{blue}{1}}{{k}^{m}}} \]
      6. pow-flip100.0%

        \[\leadsto a \cdot \frac{1}{\color{blue}{{k}^{\left(-m\right)}}} \]
    10. Applied egg-rr100.0%

      \[\leadsto \color{blue}{a \cdot \frac{1}{{k}^{\left(-m\right)}}} \]
    11. Step-by-step derivation
      1. associate-*r/100.0%

        \[\leadsto \color{blue}{\frac{a \cdot 1}{{k}^{\left(-m\right)}}} \]
      2. *-rgt-identity100.0%

        \[\leadsto \frac{\color{blue}{a}}{{k}^{\left(-m\right)}} \]
    12. Simplified100.0%

      \[\leadsto \color{blue}{\frac{a}{{k}^{\left(-m\right)}}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification98.4%

    \[\leadsto \begin{array}{l} \mathbf{if}\;m \leq 5.4 \cdot 10^{-36}:\\ \;\;\;\;a \cdot \frac{-{k}^{m}}{-1 - k \cdot \left(k + 10\right)}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\ \end{array} \]

Alternative 2: 97.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;m \leq 5.4 \cdot 10^{-36}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{k \cdot \left(k + 10\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (if (<= m 5.4e-36)
   (/ (* a (pow k m)) (+ (* k (+ k 10.0)) 1.0))
   (/ a (pow k (- m)))))
double code(double a, double k, double m) {
	double tmp;
	if (m <= 5.4e-36) {
		tmp = (a * pow(k, m)) / ((k * (k + 10.0)) + 1.0);
	} else {
		tmp = a / pow(k, -m);
	}
	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) :: tmp
    if (m <= 5.4d-36) then
        tmp = (a * (k ** m)) / ((k * (k + 10.0d0)) + 1.0d0)
    else
        tmp = a / (k ** -m)
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double tmp;
	if (m <= 5.4e-36) {
		tmp = (a * Math.pow(k, m)) / ((k * (k + 10.0)) + 1.0);
	} else {
		tmp = a / Math.pow(k, -m);
	}
	return tmp;
}
def code(a, k, m):
	tmp = 0
	if m <= 5.4e-36:
		tmp = (a * math.pow(k, m)) / ((k * (k + 10.0)) + 1.0)
	else:
		tmp = a / math.pow(k, -m)
	return tmp
function code(a, k, m)
	tmp = 0.0
	if (m <= 5.4e-36)
		tmp = Float64(Float64(a * (k ^ m)) / Float64(Float64(k * Float64(k + 10.0)) + 1.0));
	else
		tmp = Float64(a / (k ^ Float64(-m)));
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	tmp = 0.0;
	if (m <= 5.4e-36)
		tmp = (a * (k ^ m)) / ((k * (k + 10.0)) + 1.0);
	else
		tmp = a / (k ^ -m);
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := If[LessEqual[m, 5.4e-36], N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a / N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;m \leq 5.4 \cdot 10^{-36}:\\
\;\;\;\;\frac{a \cdot {k}^{m}}{k \cdot \left(k + 10\right) + 1}\\

\mathbf{else}:\\
\;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if m < 5.40000000000000015e-36

    1. Initial program 97.5%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg97.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+97.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg97.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out97.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified97.5%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]

    if 5.40000000000000015e-36 < m

    1. Initial program 80.6%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified80.6%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Step-by-step derivation
      1. frac-2neg80.6%

        \[\leadsto \color{blue}{\frac{-a \cdot {k}^{m}}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      2. div-inv80.6%

        \[\leadsto \color{blue}{\left(-a \cdot {k}^{m}\right) \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      3. distribute-rgt-neg-in80.6%

        \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right)} \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)} \]
      4. +-commutative80.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\left(k \cdot \left(10 + k\right) + 1\right)}} \]
      5. fma-def80.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
      6. +-commutative80.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, \color{blue}{k + 10}, 1\right)} \]
    5. Applied egg-rr80.6%

      \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
    6. Step-by-step derivation
      1. associate-*r/80.6%

        \[\leadsto \color{blue}{\frac{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot 1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
      2. *-rgt-identity80.6%

        \[\leadsto \frac{\color{blue}{a \cdot \left(-{k}^{m}\right)}}{-\mathsf{fma}\left(k, k + 10, 1\right)} \]
      3. distribute-rgt-neg-out80.6%

        \[\leadsto \frac{\color{blue}{-a \cdot {k}^{m}}}{-\mathsf{fma}\left(k, k + 10, 1\right)} \]
      4. distribute-neg-frac80.6%

        \[\leadsto \color{blue}{-\frac{a \cdot {k}^{m}}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
      5. associate-/l*80.7%

        \[\leadsto -\color{blue}{\frac{a}{\frac{-\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}} \]
      6. distribute-neg-frac80.7%

        \[\leadsto \color{blue}{\frac{-a}{\frac{-\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}} \]
      7. fma-udef80.7%

        \[\leadsto \frac{-a}{\frac{-\color{blue}{\left(k \cdot \left(k + 10\right) + 1\right)}}{{k}^{m}}} \]
      8. +-commutative80.7%

        \[\leadsto \frac{-a}{\frac{-\color{blue}{\left(1 + k \cdot \left(k + 10\right)\right)}}{{k}^{m}}} \]
      9. distribute-neg-in80.7%

        \[\leadsto \frac{-a}{\frac{\color{blue}{\left(-1\right) + \left(-k \cdot \left(k + 10\right)\right)}}{{k}^{m}}} \]
      10. metadata-eval80.7%

        \[\leadsto \frac{-a}{\frac{\color{blue}{-1} + \left(-k \cdot \left(k + 10\right)\right)}{{k}^{m}}} \]
      11. sub-neg80.7%

        \[\leadsto \frac{-a}{\frac{\color{blue}{-1 - k \cdot \left(k + 10\right)}}{{k}^{m}}} \]
    7. Simplified80.7%

      \[\leadsto \color{blue}{\frac{-a}{\frac{-1 - k \cdot \left(k + 10\right)}{{k}^{m}}}} \]
    8. Taylor expanded in k around 0 100.0%

      \[\leadsto \frac{-a}{\color{blue}{\frac{-1}{{k}^{m}}}} \]
    9. Step-by-step derivation
      1. frac-2neg100.0%

        \[\leadsto \color{blue}{\frac{-\left(-a\right)}{-\frac{-1}{{k}^{m}}}} \]
      2. div-inv100.0%

        \[\leadsto \color{blue}{\left(-\left(-a\right)\right) \cdot \frac{1}{-\frac{-1}{{k}^{m}}}} \]
      3. remove-double-neg100.0%

        \[\leadsto \color{blue}{a} \cdot \frac{1}{-\frac{-1}{{k}^{m}}} \]
      4. distribute-neg-frac100.0%

        \[\leadsto a \cdot \frac{1}{\color{blue}{\frac{--1}{{k}^{m}}}} \]
      5. metadata-eval100.0%

        \[\leadsto a \cdot \frac{1}{\frac{\color{blue}{1}}{{k}^{m}}} \]
      6. pow-flip100.0%

        \[\leadsto a \cdot \frac{1}{\color{blue}{{k}^{\left(-m\right)}}} \]
    10. Applied egg-rr100.0%

      \[\leadsto \color{blue}{a \cdot \frac{1}{{k}^{\left(-m\right)}}} \]
    11. Step-by-step derivation
      1. associate-*r/100.0%

        \[\leadsto \color{blue}{\frac{a \cdot 1}{{k}^{\left(-m\right)}}} \]
      2. *-rgt-identity100.0%

        \[\leadsto \frac{\color{blue}{a}}{{k}^{\left(-m\right)}} \]
    12. Simplified100.0%

      \[\leadsto \color{blue}{\frac{a}{{k}^{\left(-m\right)}}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification98.3%

    \[\leadsto \begin{array}{l} \mathbf{if}\;m \leq 5.4 \cdot 10^{-36}:\\ \;\;\;\;\frac{a \cdot {k}^{m}}{k \cdot \left(k + 10\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\ \end{array} \]

Alternative 3: 96.7% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;m \leq -1.45 \cdot 10^{-5}:\\ \;\;\;\;a \cdot {k}^{m}\\ \mathbf{elif}\;m \leq 5.4 \cdot 10^{-36}:\\ \;\;\;\;a \cdot \frac{1}{k \cdot \left(k + 10\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (if (<= m -1.45e-5)
   (* a (pow k m))
   (if (<= m 5.4e-36)
     (* a (/ 1.0 (+ (* k (+ k 10.0)) 1.0)))
     (/ a (pow k (- m))))))
double code(double a, double k, double m) {
	double tmp;
	if (m <= -1.45e-5) {
		tmp = a * pow(k, m);
	} else if (m <= 5.4e-36) {
		tmp = a * (1.0 / ((k * (k + 10.0)) + 1.0));
	} else {
		tmp = a / pow(k, -m);
	}
	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) :: tmp
    if (m <= (-1.45d-5)) then
        tmp = a * (k ** m)
    else if (m <= 5.4d-36) then
        tmp = a * (1.0d0 / ((k * (k + 10.0d0)) + 1.0d0))
    else
        tmp = a / (k ** -m)
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double tmp;
	if (m <= -1.45e-5) {
		tmp = a * Math.pow(k, m);
	} else if (m <= 5.4e-36) {
		tmp = a * (1.0 / ((k * (k + 10.0)) + 1.0));
	} else {
		tmp = a / Math.pow(k, -m);
	}
	return tmp;
}
def code(a, k, m):
	tmp = 0
	if m <= -1.45e-5:
		tmp = a * math.pow(k, m)
	elif m <= 5.4e-36:
		tmp = a * (1.0 / ((k * (k + 10.0)) + 1.0))
	else:
		tmp = a / math.pow(k, -m)
	return tmp
function code(a, k, m)
	tmp = 0.0
	if (m <= -1.45e-5)
		tmp = Float64(a * (k ^ m));
	elseif (m <= 5.4e-36)
		tmp = Float64(a * Float64(1.0 / Float64(Float64(k * Float64(k + 10.0)) + 1.0)));
	else
		tmp = Float64(a / (k ^ Float64(-m)));
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	tmp = 0.0;
	if (m <= -1.45e-5)
		tmp = a * (k ^ m);
	elseif (m <= 5.4e-36)
		tmp = a * (1.0 / ((k * (k + 10.0)) + 1.0));
	else
		tmp = a / (k ^ -m);
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := If[LessEqual[m, -1.45e-5], N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 5.4e-36], N[(a * N[(1.0 / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a / N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;m \leq -1.45 \cdot 10^{-5}:\\
\;\;\;\;a \cdot {k}^{m}\\

\mathbf{elif}\;m \leq 5.4 \cdot 10^{-36}:\\
\;\;\;\;a \cdot \frac{1}{k \cdot \left(k + 10\right) + 1}\\

\mathbf{else}:\\
\;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if m < -1.45e-5

    1. Initial program 100.0%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified100.0%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in k around 0 100.0%

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

    if -1.45e-5 < m < 5.40000000000000015e-36

    1. Initial program 94.5%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg94.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+94.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg94.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out94.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified94.5%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Step-by-step derivation
      1. frac-2neg94.5%

        \[\leadsto \color{blue}{\frac{-a \cdot {k}^{m}}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      2. div-inv94.6%

        \[\leadsto \color{blue}{\left(-a \cdot {k}^{m}\right) \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      3. distribute-rgt-neg-in94.6%

        \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right)} \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)} \]
      4. +-commutative94.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\left(k \cdot \left(10 + k\right) + 1\right)}} \]
      5. fma-def94.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
      6. +-commutative94.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, \color{blue}{k + 10}, 1\right)} \]
    5. Applied egg-rr94.6%

      \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
    6. Step-by-step derivation
      1. associate-*l*94.6%

        \[\leadsto \color{blue}{a \cdot \left(\left(-{k}^{m}\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}\right)} \]
      2. associate-*r/94.6%

        \[\leadsto a \cdot \color{blue}{\frac{\left(-{k}^{m}\right) \cdot 1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
      3. *-rgt-identity94.6%

        \[\leadsto a \cdot \frac{\color{blue}{-{k}^{m}}}{-\mathsf{fma}\left(k, k + 10, 1\right)} \]
      4. fma-udef94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{-\color{blue}{\left(k \cdot \left(k + 10\right) + 1\right)}} \]
      5. +-commutative94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{-\color{blue}{\left(1 + k \cdot \left(k + 10\right)\right)}} \]
      6. distribute-neg-in94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{\left(-1\right) + \left(-k \cdot \left(k + 10\right)\right)}} \]
      7. metadata-eval94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{-1} + \left(-k \cdot \left(k + 10\right)\right)} \]
      8. sub-neg94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{-1 - k \cdot \left(k + 10\right)}} \]
    7. Simplified94.6%

      \[\leadsto \color{blue}{a \cdot \frac{-{k}^{m}}{-1 - k \cdot \left(k + 10\right)}} \]
    8. Taylor expanded in m around 0 94.1%

      \[\leadsto a \cdot \color{blue}{\frac{1}{1 + k \cdot \left(10 + k\right)}} \]

    if 5.40000000000000015e-36 < m

    1. Initial program 80.6%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out80.6%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified80.6%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Step-by-step derivation
      1. frac-2neg80.6%

        \[\leadsto \color{blue}{\frac{-a \cdot {k}^{m}}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      2. div-inv80.6%

        \[\leadsto \color{blue}{\left(-a \cdot {k}^{m}\right) \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      3. distribute-rgt-neg-in80.6%

        \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right)} \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)} \]
      4. +-commutative80.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\left(k \cdot \left(10 + k\right) + 1\right)}} \]
      5. fma-def80.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
      6. +-commutative80.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, \color{blue}{k + 10}, 1\right)} \]
    5. Applied egg-rr80.6%

      \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
    6. Step-by-step derivation
      1. associate-*r/80.6%

        \[\leadsto \color{blue}{\frac{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot 1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
      2. *-rgt-identity80.6%

        \[\leadsto \frac{\color{blue}{a \cdot \left(-{k}^{m}\right)}}{-\mathsf{fma}\left(k, k + 10, 1\right)} \]
      3. distribute-rgt-neg-out80.6%

        \[\leadsto \frac{\color{blue}{-a \cdot {k}^{m}}}{-\mathsf{fma}\left(k, k + 10, 1\right)} \]
      4. distribute-neg-frac80.6%

        \[\leadsto \color{blue}{-\frac{a \cdot {k}^{m}}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
      5. associate-/l*80.7%

        \[\leadsto -\color{blue}{\frac{a}{\frac{-\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}} \]
      6. distribute-neg-frac80.7%

        \[\leadsto \color{blue}{\frac{-a}{\frac{-\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}} \]
      7. fma-udef80.7%

        \[\leadsto \frac{-a}{\frac{-\color{blue}{\left(k \cdot \left(k + 10\right) + 1\right)}}{{k}^{m}}} \]
      8. +-commutative80.7%

        \[\leadsto \frac{-a}{\frac{-\color{blue}{\left(1 + k \cdot \left(k + 10\right)\right)}}{{k}^{m}}} \]
      9. distribute-neg-in80.7%

        \[\leadsto \frac{-a}{\frac{\color{blue}{\left(-1\right) + \left(-k \cdot \left(k + 10\right)\right)}}{{k}^{m}}} \]
      10. metadata-eval80.7%

        \[\leadsto \frac{-a}{\frac{\color{blue}{-1} + \left(-k \cdot \left(k + 10\right)\right)}{{k}^{m}}} \]
      11. sub-neg80.7%

        \[\leadsto \frac{-a}{\frac{\color{blue}{-1 - k \cdot \left(k + 10\right)}}{{k}^{m}}} \]
    7. Simplified80.7%

      \[\leadsto \color{blue}{\frac{-a}{\frac{-1 - k \cdot \left(k + 10\right)}{{k}^{m}}}} \]
    8. Taylor expanded in k around 0 100.0%

      \[\leadsto \frac{-a}{\color{blue}{\frac{-1}{{k}^{m}}}} \]
    9. Step-by-step derivation
      1. frac-2neg100.0%

        \[\leadsto \color{blue}{\frac{-\left(-a\right)}{-\frac{-1}{{k}^{m}}}} \]
      2. div-inv100.0%

        \[\leadsto \color{blue}{\left(-\left(-a\right)\right) \cdot \frac{1}{-\frac{-1}{{k}^{m}}}} \]
      3. remove-double-neg100.0%

        \[\leadsto \color{blue}{a} \cdot \frac{1}{-\frac{-1}{{k}^{m}}} \]
      4. distribute-neg-frac100.0%

        \[\leadsto a \cdot \frac{1}{\color{blue}{\frac{--1}{{k}^{m}}}} \]
      5. metadata-eval100.0%

        \[\leadsto a \cdot \frac{1}{\frac{\color{blue}{1}}{{k}^{m}}} \]
      6. pow-flip100.0%

        \[\leadsto a \cdot \frac{1}{\color{blue}{{k}^{\left(-m\right)}}} \]
    10. Applied egg-rr100.0%

      \[\leadsto \color{blue}{a \cdot \frac{1}{{k}^{\left(-m\right)}}} \]
    11. Step-by-step derivation
      1. associate-*r/100.0%

        \[\leadsto \color{blue}{\frac{a \cdot 1}{{k}^{\left(-m\right)}}} \]
      2. *-rgt-identity100.0%

        \[\leadsto \frac{\color{blue}{a}}{{k}^{\left(-m\right)}} \]
    12. Simplified100.0%

      \[\leadsto \color{blue}{\frac{a}{{k}^{\left(-m\right)}}} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification98.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;m \leq -1.45 \cdot 10^{-5}:\\ \;\;\;\;a \cdot {k}^{m}\\ \mathbf{elif}\;m \leq 5.4 \cdot 10^{-36}:\\ \;\;\;\;a \cdot \frac{1}{k \cdot \left(k + 10\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\ \end{array} \]

Alternative 4: 96.7% accurate, 1.1× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;m \leq -4.4 \cdot 10^{-10} \lor \neg \left(m \leq 5.4 \cdot 10^{-36}\right):\\ \;\;\;\;a \cdot {k}^{m}\\ \mathbf{else}:\\ \;\;\;\;a \cdot \frac{1}{k \cdot \left(k + 10\right) + 1}\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (if (or (<= m -4.4e-10) (not (<= m 5.4e-36)))
   (* a (pow k m))
   (* a (/ 1.0 (+ (* k (+ k 10.0)) 1.0)))))
double code(double a, double k, double m) {
	double tmp;
	if ((m <= -4.4e-10) || !(m <= 5.4e-36)) {
		tmp = a * pow(k, m);
	} else {
		tmp = a * (1.0 / ((k * (k + 10.0)) + 1.0));
	}
	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) :: tmp
    if ((m <= (-4.4d-10)) .or. (.not. (m <= 5.4d-36))) then
        tmp = a * (k ** m)
    else
        tmp = a * (1.0d0 / ((k * (k + 10.0d0)) + 1.0d0))
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double tmp;
	if ((m <= -4.4e-10) || !(m <= 5.4e-36)) {
		tmp = a * Math.pow(k, m);
	} else {
		tmp = a * (1.0 / ((k * (k + 10.0)) + 1.0));
	}
	return tmp;
}
def code(a, k, m):
	tmp = 0
	if (m <= -4.4e-10) or not (m <= 5.4e-36):
		tmp = a * math.pow(k, m)
	else:
		tmp = a * (1.0 / ((k * (k + 10.0)) + 1.0))
	return tmp
function code(a, k, m)
	tmp = 0.0
	if ((m <= -4.4e-10) || !(m <= 5.4e-36))
		tmp = Float64(a * (k ^ m));
	else
		tmp = Float64(a * Float64(1.0 / Float64(Float64(k * Float64(k + 10.0)) + 1.0)));
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	tmp = 0.0;
	if ((m <= -4.4e-10) || ~((m <= 5.4e-36)))
		tmp = a * (k ^ m);
	else
		tmp = a * (1.0 / ((k * (k + 10.0)) + 1.0));
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := If[Or[LessEqual[m, -4.4e-10], N[Not[LessEqual[m, 5.4e-36]], $MachinePrecision]], N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision], N[(a * N[(1.0 / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;m \leq -4.4 \cdot 10^{-10} \lor \neg \left(m \leq 5.4 \cdot 10^{-36}\right):\\
\;\;\;\;a \cdot {k}^{m}\\

\mathbf{else}:\\
\;\;\;\;a \cdot \frac{1}{k \cdot \left(k + 10\right) + 1}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if m < -4.3999999999999998e-10 or 5.40000000000000015e-36 < m

    1. Initial program 90.5%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg90.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+90.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg90.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out90.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified90.5%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in k around 0 100.0%

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

    if -4.3999999999999998e-10 < m < 5.40000000000000015e-36

    1. Initial program 94.5%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg94.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+94.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg94.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out94.5%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified94.5%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Step-by-step derivation
      1. frac-2neg94.5%

        \[\leadsto \color{blue}{\frac{-a \cdot {k}^{m}}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      2. div-inv94.6%

        \[\leadsto \color{blue}{\left(-a \cdot {k}^{m}\right) \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
      3. distribute-rgt-neg-in94.6%

        \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right)} \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)} \]
      4. +-commutative94.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\left(k \cdot \left(10 + k\right) + 1\right)}} \]
      5. fma-def94.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
      6. +-commutative94.6%

        \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, \color{blue}{k + 10}, 1\right)} \]
    5. Applied egg-rr94.6%

      \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
    6. Step-by-step derivation
      1. associate-*l*94.6%

        \[\leadsto \color{blue}{a \cdot \left(\left(-{k}^{m}\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}\right)} \]
      2. associate-*r/94.6%

        \[\leadsto a \cdot \color{blue}{\frac{\left(-{k}^{m}\right) \cdot 1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
      3. *-rgt-identity94.6%

        \[\leadsto a \cdot \frac{\color{blue}{-{k}^{m}}}{-\mathsf{fma}\left(k, k + 10, 1\right)} \]
      4. fma-udef94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{-\color{blue}{\left(k \cdot \left(k + 10\right) + 1\right)}} \]
      5. +-commutative94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{-\color{blue}{\left(1 + k \cdot \left(k + 10\right)\right)}} \]
      6. distribute-neg-in94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{\left(-1\right) + \left(-k \cdot \left(k + 10\right)\right)}} \]
      7. metadata-eval94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{-1} + \left(-k \cdot \left(k + 10\right)\right)} \]
      8. sub-neg94.6%

        \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{-1 - k \cdot \left(k + 10\right)}} \]
    7. Simplified94.6%

      \[\leadsto \color{blue}{a \cdot \frac{-{k}^{m}}{-1 - k \cdot \left(k + 10\right)}} \]
    8. Taylor expanded in m around 0 94.1%

      \[\leadsto a \cdot \color{blue}{\frac{1}{1 + k \cdot \left(10 + k\right)}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification98.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;m \leq -4.4 \cdot 10^{-10} \lor \neg \left(m \leq 5.4 \cdot 10^{-36}\right):\\ \;\;\;\;a \cdot {k}^{m}\\ \mathbf{else}:\\ \;\;\;\;a \cdot \frac{1}{k \cdot \left(k + 10\right) + 1}\\ \end{array} \]

Alternative 5: 30.5% accurate, 10.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;k \leq -2 \cdot 10^{-310}:\\ \;\;\;\;a \cdot \frac{-0.1}{k}\\ \mathbf{elif}\;k \leq 0.075:\\ \;\;\;\;a + -10 \cdot \left(a \cdot k\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{0.1}{\frac{k}{a}}\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (if (<= k -2e-310)
   (* a (/ -0.1 k))
   (if (<= k 0.075) (+ a (* -10.0 (* a k))) (/ 0.1 (/ k a)))))
double code(double a, double k, double m) {
	double tmp;
	if (k <= -2e-310) {
		tmp = a * (-0.1 / k);
	} else if (k <= 0.075) {
		tmp = a + (-10.0 * (a * k));
	} else {
		tmp = 0.1 / (k / a);
	}
	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) :: tmp
    if (k <= (-2d-310)) then
        tmp = a * ((-0.1d0) / k)
    else if (k <= 0.075d0) then
        tmp = a + ((-10.0d0) * (a * k))
    else
        tmp = 0.1d0 / (k / a)
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double tmp;
	if (k <= -2e-310) {
		tmp = a * (-0.1 / k);
	} else if (k <= 0.075) {
		tmp = a + (-10.0 * (a * k));
	} else {
		tmp = 0.1 / (k / a);
	}
	return tmp;
}
def code(a, k, m):
	tmp = 0
	if k <= -2e-310:
		tmp = a * (-0.1 / k)
	elif k <= 0.075:
		tmp = a + (-10.0 * (a * k))
	else:
		tmp = 0.1 / (k / a)
	return tmp
function code(a, k, m)
	tmp = 0.0
	if (k <= -2e-310)
		tmp = Float64(a * Float64(-0.1 / k));
	elseif (k <= 0.075)
		tmp = Float64(a + Float64(-10.0 * Float64(a * k)));
	else
		tmp = Float64(0.1 / Float64(k / a));
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	tmp = 0.0;
	if (k <= -2e-310)
		tmp = a * (-0.1 / k);
	elseif (k <= 0.075)
		tmp = a + (-10.0 * (a * k));
	else
		tmp = 0.1 / (k / a);
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := If[LessEqual[k, -2e-310], N[(a * N[(-0.1 / k), $MachinePrecision]), $MachinePrecision], If[LessEqual[k, 0.075], N[(a + N[(-10.0 * N[(a * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.1 / N[(k / a), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;k \leq -2 \cdot 10^{-310}:\\
\;\;\;\;a \cdot \frac{-0.1}{k}\\

\mathbf{elif}\;k \leq 0.075:\\
\;\;\;\;a + -10 \cdot \left(a \cdot k\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{0.1}{\frac{k}{a}}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if k < -1.999999999999994e-310

    1. Initial program 85.9%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified85.9%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 23.3%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 13.4%

      \[\leadsto \frac{a}{1 + \color{blue}{10 \cdot k}} \]
    6. Step-by-step derivation
      1. *-commutative13.4%

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    7. Simplified13.4%

      \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    8. Taylor expanded in k around inf 12.5%

      \[\leadsto \color{blue}{0.1 \cdot \frac{a}{k}} \]
    9. Step-by-step derivation
      1. metadata-eval12.5%

        \[\leadsto \color{blue}{\frac{1}{10}} \cdot \frac{a}{k} \]
      2. times-frac12.5%

        \[\leadsto \color{blue}{\frac{1 \cdot a}{10 \cdot k}} \]
      3. *-un-lft-identity12.5%

        \[\leadsto \frac{\color{blue}{a}}{10 \cdot k} \]
      4. *-commutative12.5%

        \[\leadsto \frac{a}{\color{blue}{k \cdot 10}} \]
      5. expm1-log1p-u12.1%

        \[\leadsto \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{a}{k \cdot 10}\right)\right)} \]
      6. expm1-udef30.3%

        \[\leadsto \color{blue}{e^{\mathsf{log1p}\left(\frac{a}{k \cdot 10}\right)} - 1} \]
      7. frac-2neg30.3%

        \[\leadsto e^{\mathsf{log1p}\left(\color{blue}{\frac{-a}{-k \cdot 10}}\right)} - 1 \]
      8. add-sqr-sqrt15.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{-a} \cdot \sqrt{-a}}}{-k \cdot 10}\right)} - 1 \]
      9. sqrt-unprod40.4%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{\left(-a\right) \cdot \left(-a\right)}}}{-k \cdot 10}\right)} - 1 \]
      10. sqr-neg40.4%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\sqrt{\color{blue}{a \cdot a}}}{-k \cdot 10}\right)} - 1 \]
      11. sqrt-unprod19.1%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{a} \cdot \sqrt{a}}}{-k \cdot 10}\right)} - 1 \]
      12. add-sqr-sqrt34.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{a}}{-k \cdot 10}\right)} - 1 \]
      13. distribute-rgt-neg-in34.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{a}{\color{blue}{k \cdot \left(-10\right)}}\right)} - 1 \]
      14. metadata-eval34.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{a}{k \cdot \color{blue}{-10}}\right)} - 1 \]
    10. Applied egg-rr34.9%

      \[\leadsto \color{blue}{e^{\mathsf{log1p}\left(\frac{a}{k \cdot -10}\right)} - 1} \]
    11. Step-by-step derivation
      1. expm1-def16.9%

        \[\leadsto \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{a}{k \cdot -10}\right)\right)} \]
      2. expm1-log1p20.2%

        \[\leadsto \color{blue}{\frac{a}{k \cdot -10}} \]
      3. *-rgt-identity20.2%

        \[\leadsto \frac{\color{blue}{a \cdot 1}}{k \cdot -10} \]
      4. associate-*r/20.2%

        \[\leadsto \color{blue}{a \cdot \frac{1}{k \cdot -10}} \]
      5. *-commutative20.2%

        \[\leadsto a \cdot \frac{1}{\color{blue}{-10 \cdot k}} \]
      6. associate-/r*20.2%

        \[\leadsto a \cdot \color{blue}{\frac{\frac{1}{-10}}{k}} \]
      7. metadata-eval20.2%

        \[\leadsto a \cdot \frac{\color{blue}{-0.1}}{k} \]
    12. Simplified20.2%

      \[\leadsto \color{blue}{a \cdot \frac{-0.1}{k}} \]

    if -1.999999999999994e-310 < k < 0.0749999999999999972

    1. Initial program 99.9%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified99.9%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 44.3%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 43.7%

      \[\leadsto \color{blue}{a + -10 \cdot \left(a \cdot k\right)} \]

    if 0.0749999999999999972 < k

    1. Initial program 87.3%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified87.3%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 62.1%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 24.3%

      \[\leadsto \frac{a}{1 + \color{blue}{10 \cdot k}} \]
    6. Step-by-step derivation
      1. *-commutative24.3%

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    7. Simplified24.3%

      \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    8. Taylor expanded in k around inf 24.3%

      \[\leadsto \color{blue}{0.1 \cdot \frac{a}{k}} \]
    9. Step-by-step derivation
      1. associate-*r/24.3%

        \[\leadsto \color{blue}{\frac{0.1 \cdot a}{k}} \]
      2. associate-/l*26.2%

        \[\leadsto \color{blue}{\frac{0.1}{\frac{k}{a}}} \]
    10. Applied egg-rr26.2%

      \[\leadsto \color{blue}{\frac{0.1}{\frac{k}{a}}} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification31.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \leq -2 \cdot 10^{-310}:\\ \;\;\;\;a \cdot \frac{-0.1}{k}\\ \mathbf{elif}\;k \leq 0.075:\\ \;\;\;\;a + -10 \cdot \left(a \cdot k\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{0.1}{\frac{k}{a}}\\ \end{array} \]

Alternative 6: 45.4% accurate, 10.4× speedup?

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

\\
a \cdot \frac{1}{k \cdot \left(k + 10\right) + 1}
\end{array}
Derivation
  1. Initial program 91.7%

    \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
  2. Step-by-step derivation
    1. sqr-neg91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
    2. associate-+l+91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
    3. sqr-neg91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
    4. distribute-rgt-out91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
  3. Simplified91.7%

    \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
  4. Step-by-step derivation
    1. frac-2neg91.7%

      \[\leadsto \color{blue}{\frac{-a \cdot {k}^{m}}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
    2. div-inv91.7%

      \[\leadsto \color{blue}{\left(-a \cdot {k}^{m}\right) \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)}} \]
    3. distribute-rgt-neg-in91.7%

      \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right)} \cdot \frac{1}{-\left(1 + k \cdot \left(10 + k\right)\right)} \]
    4. +-commutative91.7%

      \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\left(k \cdot \left(10 + k\right) + 1\right)}} \]
    5. fma-def91.7%

      \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\color{blue}{\mathsf{fma}\left(k, 10 + k, 1\right)}} \]
    6. +-commutative91.7%

      \[\leadsto \left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, \color{blue}{k + 10}, 1\right)} \]
  5. Applied egg-rr91.7%

    \[\leadsto \color{blue}{\left(a \cdot \left(-{k}^{m}\right)\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
  6. Step-by-step derivation
    1. associate-*l*91.7%

      \[\leadsto \color{blue}{a \cdot \left(\left(-{k}^{m}\right) \cdot \frac{1}{-\mathsf{fma}\left(k, k + 10, 1\right)}\right)} \]
    2. associate-*r/91.7%

      \[\leadsto a \cdot \color{blue}{\frac{\left(-{k}^{m}\right) \cdot 1}{-\mathsf{fma}\left(k, k + 10, 1\right)}} \]
    3. *-rgt-identity91.7%

      \[\leadsto a \cdot \frac{\color{blue}{-{k}^{m}}}{-\mathsf{fma}\left(k, k + 10, 1\right)} \]
    4. fma-udef91.7%

      \[\leadsto a \cdot \frac{-{k}^{m}}{-\color{blue}{\left(k \cdot \left(k + 10\right) + 1\right)}} \]
    5. +-commutative91.7%

      \[\leadsto a \cdot \frac{-{k}^{m}}{-\color{blue}{\left(1 + k \cdot \left(k + 10\right)\right)}} \]
    6. distribute-neg-in91.7%

      \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{\left(-1\right) + \left(-k \cdot \left(k + 10\right)\right)}} \]
    7. metadata-eval91.7%

      \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{-1} + \left(-k \cdot \left(k + 10\right)\right)} \]
    8. sub-neg91.7%

      \[\leadsto a \cdot \frac{-{k}^{m}}{\color{blue}{-1 - k \cdot \left(k + 10\right)}} \]
  7. Simplified91.7%

    \[\leadsto \color{blue}{a \cdot \frac{-{k}^{m}}{-1 - k \cdot \left(k + 10\right)}} \]
  8. Taylor expanded in m around 0 44.6%

    \[\leadsto a \cdot \color{blue}{\frac{1}{1 + k \cdot \left(10 + k\right)}} \]
  9. Final simplification44.6%

    \[\leadsto a \cdot \frac{1}{k \cdot \left(k + 10\right) + 1} \]

Alternative 7: 30.1% accurate, 12.5× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;k \leq -2 \cdot 10^{-310}:\\ \;\;\;\;a \cdot \frac{-0.1}{k}\\ \mathbf{elif}\;k \leq 0.1:\\ \;\;\;\;a\\ \mathbf{else}:\\ \;\;\;\;0.1 \cdot \frac{a}{k}\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (if (<= k -2e-310) (* a (/ -0.1 k)) (if (<= k 0.1) a (* 0.1 (/ a k)))))
double code(double a, double k, double m) {
	double tmp;
	if (k <= -2e-310) {
		tmp = a * (-0.1 / k);
	} else if (k <= 0.1) {
		tmp = a;
	} else {
		tmp = 0.1 * (a / 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) :: tmp
    if (k <= (-2d-310)) then
        tmp = a * ((-0.1d0) / k)
    else if (k <= 0.1d0) then
        tmp = a
    else
        tmp = 0.1d0 * (a / k)
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double tmp;
	if (k <= -2e-310) {
		tmp = a * (-0.1 / k);
	} else if (k <= 0.1) {
		tmp = a;
	} else {
		tmp = 0.1 * (a / k);
	}
	return tmp;
}
def code(a, k, m):
	tmp = 0
	if k <= -2e-310:
		tmp = a * (-0.1 / k)
	elif k <= 0.1:
		tmp = a
	else:
		tmp = 0.1 * (a / k)
	return tmp
function code(a, k, m)
	tmp = 0.0
	if (k <= -2e-310)
		tmp = Float64(a * Float64(-0.1 / k));
	elseif (k <= 0.1)
		tmp = a;
	else
		tmp = Float64(0.1 * Float64(a / k));
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	tmp = 0.0;
	if (k <= -2e-310)
		tmp = a * (-0.1 / k);
	elseif (k <= 0.1)
		tmp = a;
	else
		tmp = 0.1 * (a / k);
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := If[LessEqual[k, -2e-310], N[(a * N[(-0.1 / k), $MachinePrecision]), $MachinePrecision], If[LessEqual[k, 0.1], a, N[(0.1 * N[(a / k), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;k \leq -2 \cdot 10^{-310}:\\
\;\;\;\;a \cdot \frac{-0.1}{k}\\

\mathbf{elif}\;k \leq 0.1:\\
\;\;\;\;a\\

\mathbf{else}:\\
\;\;\;\;0.1 \cdot \frac{a}{k}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if k < -1.999999999999994e-310

    1. Initial program 85.9%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified85.9%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 23.3%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 13.4%

      \[\leadsto \frac{a}{1 + \color{blue}{10 \cdot k}} \]
    6. Step-by-step derivation
      1. *-commutative13.4%

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    7. Simplified13.4%

      \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    8. Taylor expanded in k around inf 12.5%

      \[\leadsto \color{blue}{0.1 \cdot \frac{a}{k}} \]
    9. Step-by-step derivation
      1. metadata-eval12.5%

        \[\leadsto \color{blue}{\frac{1}{10}} \cdot \frac{a}{k} \]
      2. times-frac12.5%

        \[\leadsto \color{blue}{\frac{1 \cdot a}{10 \cdot k}} \]
      3. *-un-lft-identity12.5%

        \[\leadsto \frac{\color{blue}{a}}{10 \cdot k} \]
      4. *-commutative12.5%

        \[\leadsto \frac{a}{\color{blue}{k \cdot 10}} \]
      5. expm1-log1p-u12.1%

        \[\leadsto \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{a}{k \cdot 10}\right)\right)} \]
      6. expm1-udef30.3%

        \[\leadsto \color{blue}{e^{\mathsf{log1p}\left(\frac{a}{k \cdot 10}\right)} - 1} \]
      7. frac-2neg30.3%

        \[\leadsto e^{\mathsf{log1p}\left(\color{blue}{\frac{-a}{-k \cdot 10}}\right)} - 1 \]
      8. add-sqr-sqrt15.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{-a} \cdot \sqrt{-a}}}{-k \cdot 10}\right)} - 1 \]
      9. sqrt-unprod40.4%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{\left(-a\right) \cdot \left(-a\right)}}}{-k \cdot 10}\right)} - 1 \]
      10. sqr-neg40.4%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\sqrt{\color{blue}{a \cdot a}}}{-k \cdot 10}\right)} - 1 \]
      11. sqrt-unprod19.1%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{a} \cdot \sqrt{a}}}{-k \cdot 10}\right)} - 1 \]
      12. add-sqr-sqrt34.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{a}}{-k \cdot 10}\right)} - 1 \]
      13. distribute-rgt-neg-in34.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{a}{\color{blue}{k \cdot \left(-10\right)}}\right)} - 1 \]
      14. metadata-eval34.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{a}{k \cdot \color{blue}{-10}}\right)} - 1 \]
    10. Applied egg-rr34.9%

      \[\leadsto \color{blue}{e^{\mathsf{log1p}\left(\frac{a}{k \cdot -10}\right)} - 1} \]
    11. Step-by-step derivation
      1. expm1-def16.9%

        \[\leadsto \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{a}{k \cdot -10}\right)\right)} \]
      2. expm1-log1p20.2%

        \[\leadsto \color{blue}{\frac{a}{k \cdot -10}} \]
      3. *-rgt-identity20.2%

        \[\leadsto \frac{\color{blue}{a \cdot 1}}{k \cdot -10} \]
      4. associate-*r/20.2%

        \[\leadsto \color{blue}{a \cdot \frac{1}{k \cdot -10}} \]
      5. *-commutative20.2%

        \[\leadsto a \cdot \frac{1}{\color{blue}{-10 \cdot k}} \]
      6. associate-/r*20.2%

        \[\leadsto a \cdot \color{blue}{\frac{\frac{1}{-10}}{k}} \]
      7. metadata-eval20.2%

        \[\leadsto a \cdot \frac{\color{blue}{-0.1}}{k} \]
    12. Simplified20.2%

      \[\leadsto \color{blue}{a \cdot \frac{-0.1}{k}} \]

    if -1.999999999999994e-310 < k < 0.10000000000000001

    1. Initial program 99.9%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified99.9%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 44.3%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 43.6%

      \[\leadsto \color{blue}{a} \]

    if 0.10000000000000001 < k

    1. Initial program 87.3%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified87.3%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 62.1%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 24.3%

      \[\leadsto \frac{a}{1 + \color{blue}{10 \cdot k}} \]
    6. Step-by-step derivation
      1. *-commutative24.3%

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    7. Simplified24.3%

      \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    8. Taylor expanded in k around inf 24.3%

      \[\leadsto \color{blue}{0.1 \cdot \frac{a}{k}} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification30.5%

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \leq -2 \cdot 10^{-310}:\\ \;\;\;\;a \cdot \frac{-0.1}{k}\\ \mathbf{elif}\;k \leq 0.1:\\ \;\;\;\;a\\ \mathbf{else}:\\ \;\;\;\;0.1 \cdot \frac{a}{k}\\ \end{array} \]

Alternative 8: 30.3% accurate, 12.5× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;k \leq -2 \cdot 10^{-310}:\\ \;\;\;\;a \cdot \frac{-0.1}{k}\\ \mathbf{elif}\;k \leq 0.1:\\ \;\;\;\;a\\ \mathbf{else}:\\ \;\;\;\;\frac{0.1}{\frac{k}{a}}\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (if (<= k -2e-310) (* a (/ -0.1 k)) (if (<= k 0.1) a (/ 0.1 (/ k a)))))
double code(double a, double k, double m) {
	double tmp;
	if (k <= -2e-310) {
		tmp = a * (-0.1 / k);
	} else if (k <= 0.1) {
		tmp = a;
	} else {
		tmp = 0.1 / (k / a);
	}
	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) :: tmp
    if (k <= (-2d-310)) then
        tmp = a * ((-0.1d0) / k)
    else if (k <= 0.1d0) then
        tmp = a
    else
        tmp = 0.1d0 / (k / a)
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double tmp;
	if (k <= -2e-310) {
		tmp = a * (-0.1 / k);
	} else if (k <= 0.1) {
		tmp = a;
	} else {
		tmp = 0.1 / (k / a);
	}
	return tmp;
}
def code(a, k, m):
	tmp = 0
	if k <= -2e-310:
		tmp = a * (-0.1 / k)
	elif k <= 0.1:
		tmp = a
	else:
		tmp = 0.1 / (k / a)
	return tmp
function code(a, k, m)
	tmp = 0.0
	if (k <= -2e-310)
		tmp = Float64(a * Float64(-0.1 / k));
	elseif (k <= 0.1)
		tmp = a;
	else
		tmp = Float64(0.1 / Float64(k / a));
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	tmp = 0.0;
	if (k <= -2e-310)
		tmp = a * (-0.1 / k);
	elseif (k <= 0.1)
		tmp = a;
	else
		tmp = 0.1 / (k / a);
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := If[LessEqual[k, -2e-310], N[(a * N[(-0.1 / k), $MachinePrecision]), $MachinePrecision], If[LessEqual[k, 0.1], a, N[(0.1 / N[(k / a), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;k \leq -2 \cdot 10^{-310}:\\
\;\;\;\;a \cdot \frac{-0.1}{k}\\

\mathbf{elif}\;k \leq 0.1:\\
\;\;\;\;a\\

\mathbf{else}:\\
\;\;\;\;\frac{0.1}{\frac{k}{a}}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if k < -1.999999999999994e-310

    1. Initial program 85.9%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out85.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified85.9%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 23.3%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 13.4%

      \[\leadsto \frac{a}{1 + \color{blue}{10 \cdot k}} \]
    6. Step-by-step derivation
      1. *-commutative13.4%

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    7. Simplified13.4%

      \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    8. Taylor expanded in k around inf 12.5%

      \[\leadsto \color{blue}{0.1 \cdot \frac{a}{k}} \]
    9. Step-by-step derivation
      1. metadata-eval12.5%

        \[\leadsto \color{blue}{\frac{1}{10}} \cdot \frac{a}{k} \]
      2. times-frac12.5%

        \[\leadsto \color{blue}{\frac{1 \cdot a}{10 \cdot k}} \]
      3. *-un-lft-identity12.5%

        \[\leadsto \frac{\color{blue}{a}}{10 \cdot k} \]
      4. *-commutative12.5%

        \[\leadsto \frac{a}{\color{blue}{k \cdot 10}} \]
      5. expm1-log1p-u12.1%

        \[\leadsto \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{a}{k \cdot 10}\right)\right)} \]
      6. expm1-udef30.3%

        \[\leadsto \color{blue}{e^{\mathsf{log1p}\left(\frac{a}{k \cdot 10}\right)} - 1} \]
      7. frac-2neg30.3%

        \[\leadsto e^{\mathsf{log1p}\left(\color{blue}{\frac{-a}{-k \cdot 10}}\right)} - 1 \]
      8. add-sqr-sqrt15.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{-a} \cdot \sqrt{-a}}}{-k \cdot 10}\right)} - 1 \]
      9. sqrt-unprod40.4%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{\left(-a\right) \cdot \left(-a\right)}}}{-k \cdot 10}\right)} - 1 \]
      10. sqr-neg40.4%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\sqrt{\color{blue}{a \cdot a}}}{-k \cdot 10}\right)} - 1 \]
      11. sqrt-unprod19.1%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{\sqrt{a} \cdot \sqrt{a}}}{-k \cdot 10}\right)} - 1 \]
      12. add-sqr-sqrt34.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{\color{blue}{a}}{-k \cdot 10}\right)} - 1 \]
      13. distribute-rgt-neg-in34.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{a}{\color{blue}{k \cdot \left(-10\right)}}\right)} - 1 \]
      14. metadata-eval34.9%

        \[\leadsto e^{\mathsf{log1p}\left(\frac{a}{k \cdot \color{blue}{-10}}\right)} - 1 \]
    10. Applied egg-rr34.9%

      \[\leadsto \color{blue}{e^{\mathsf{log1p}\left(\frac{a}{k \cdot -10}\right)} - 1} \]
    11. Step-by-step derivation
      1. expm1-def16.9%

        \[\leadsto \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{a}{k \cdot -10}\right)\right)} \]
      2. expm1-log1p20.2%

        \[\leadsto \color{blue}{\frac{a}{k \cdot -10}} \]
      3. *-rgt-identity20.2%

        \[\leadsto \frac{\color{blue}{a \cdot 1}}{k \cdot -10} \]
      4. associate-*r/20.2%

        \[\leadsto \color{blue}{a \cdot \frac{1}{k \cdot -10}} \]
      5. *-commutative20.2%

        \[\leadsto a \cdot \frac{1}{\color{blue}{-10 \cdot k}} \]
      6. associate-/r*20.2%

        \[\leadsto a \cdot \color{blue}{\frac{\frac{1}{-10}}{k}} \]
      7. metadata-eval20.2%

        \[\leadsto a \cdot \frac{\color{blue}{-0.1}}{k} \]
    12. Simplified20.2%

      \[\leadsto \color{blue}{a \cdot \frac{-0.1}{k}} \]

    if -1.999999999999994e-310 < k < 0.10000000000000001

    1. Initial program 99.9%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out99.9%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified99.9%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 44.3%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 43.6%

      \[\leadsto \color{blue}{a} \]

    if 0.10000000000000001 < k

    1. Initial program 87.3%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out87.3%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified87.3%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 62.1%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 24.3%

      \[\leadsto \frac{a}{1 + \color{blue}{10 \cdot k}} \]
    6. Step-by-step derivation
      1. *-commutative24.3%

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    7. Simplified24.3%

      \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    8. Taylor expanded in k around inf 24.3%

      \[\leadsto \color{blue}{0.1 \cdot \frac{a}{k}} \]
    9. Step-by-step derivation
      1. associate-*r/24.3%

        \[\leadsto \color{blue}{\frac{0.1 \cdot a}{k}} \]
      2. associate-/l*26.2%

        \[\leadsto \color{blue}{\frac{0.1}{\frac{k}{a}}} \]
    10. Applied egg-rr26.2%

      \[\leadsto \color{blue}{\frac{0.1}{\frac{k}{a}}} \]
  3. Recombined 3 regimes into one program.
  4. Final simplification31.1%

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \leq -2 \cdot 10^{-310}:\\ \;\;\;\;a \cdot \frac{-0.1}{k}\\ \mathbf{elif}\;k \leq 0.1:\\ \;\;\;\;a\\ \mathbf{else}:\\ \;\;\;\;\frac{0.1}{\frac{k}{a}}\\ \end{array} \]

Alternative 9: 31.5% accurate, 12.6× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;m \leq -0.25:\\ \;\;\;\;\frac{0.1}{\frac{k}{a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{1 + k \cdot 10}\\ \end{array} \end{array} \]
(FPCore (a k m)
 :precision binary64
 (if (<= m -0.25) (/ 0.1 (/ k a)) (/ a (+ 1.0 (* k 10.0)))))
double code(double a, double k, double m) {
	double tmp;
	if (m <= -0.25) {
		tmp = 0.1 / (k / a);
	} else {
		tmp = a / (1.0 + (k * 10.0));
	}
	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) :: tmp
    if (m <= (-0.25d0)) then
        tmp = 0.1d0 / (k / a)
    else
        tmp = a / (1.0d0 + (k * 10.0d0))
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double tmp;
	if (m <= -0.25) {
		tmp = 0.1 / (k / a);
	} else {
		tmp = a / (1.0 + (k * 10.0));
	}
	return tmp;
}
def code(a, k, m):
	tmp = 0
	if m <= -0.25:
		tmp = 0.1 / (k / a)
	else:
		tmp = a / (1.0 + (k * 10.0))
	return tmp
function code(a, k, m)
	tmp = 0.0
	if (m <= -0.25)
		tmp = Float64(0.1 / Float64(k / a));
	else
		tmp = Float64(a / Float64(1.0 + Float64(k * 10.0)));
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	tmp = 0.0;
	if (m <= -0.25)
		tmp = 0.1 / (k / a);
	else
		tmp = a / (1.0 + (k * 10.0));
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := If[LessEqual[m, -0.25], N[(0.1 / N[(k / a), $MachinePrecision]), $MachinePrecision], N[(a / N[(1.0 + N[(k * 10.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.25:\\
\;\;\;\;\frac{0.1}{\frac{k}{a}}\\

\mathbf{else}:\\
\;\;\;\;\frac{a}{1 + k \cdot 10}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if m < -0.25

    1. Initial program 100.0%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified100.0%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 39.1%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 22.0%

      \[\leadsto \frac{a}{1 + \color{blue}{10 \cdot k}} \]
    6. Step-by-step derivation
      1. *-commutative22.0%

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    7. Simplified22.0%

      \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    8. Taylor expanded in k around inf 28.1%

      \[\leadsto \color{blue}{0.1 \cdot \frac{a}{k}} \]
    9. Step-by-step derivation
      1. associate-*r/28.1%

        \[\leadsto \color{blue}{\frac{0.1 \cdot a}{k}} \]
      2. associate-/l*29.4%

        \[\leadsto \color{blue}{\frac{0.1}{\frac{k}{a}}} \]
    10. Applied egg-rr29.4%

      \[\leadsto \color{blue}{\frac{0.1}{\frac{k}{a}}} \]

    if -0.25 < m

    1. Initial program 87.2%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg87.2%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+87.2%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg87.2%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out87.2%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified87.2%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 47.6%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 32.3%

      \[\leadsto \frac{a}{1 + \color{blue}{10 \cdot k}} \]
    6. Step-by-step derivation
      1. *-commutative32.3%

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    7. Simplified32.3%

      \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification31.3%

    \[\leadsto \begin{array}{l} \mathbf{if}\;m \leq -0.25:\\ \;\;\;\;\frac{0.1}{\frac{k}{a}}\\ \mathbf{else}:\\ \;\;\;\;\frac{a}{1 + k \cdot 10}\\ \end{array} \]

Alternative 10: 45.4% accurate, 12.7× speedup?

\[\begin{array}{l} \\ \frac{a}{k \cdot \left(k + 10\right) + 1} \end{array} \]
(FPCore (a k m) :precision binary64 (/ a (+ (* k (+ k 10.0)) 1.0)))
double code(double a, double k, double m) {
	return a / ((k * (k + 10.0)) + 1.0);
}
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 * (k + 10.0d0)) + 1.0d0)
end function
public static double code(double a, double k, double m) {
	return a / ((k * (k + 10.0)) + 1.0);
}
def code(a, k, m):
	return a / ((k * (k + 10.0)) + 1.0)
function code(a, k, m)
	return Float64(a / Float64(Float64(k * Float64(k + 10.0)) + 1.0))
end
function tmp = code(a, k, m)
	tmp = a / ((k * (k + 10.0)) + 1.0);
end
code[a_, k_, m_] := N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{a}{k \cdot \left(k + 10\right) + 1}
\end{array}
Derivation
  1. Initial program 91.7%

    \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
  2. Step-by-step derivation
    1. sqr-neg91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
    2. associate-+l+91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
    3. sqr-neg91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
    4. distribute-rgt-out91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
  3. Simplified91.7%

    \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
  4. Taylor expanded in m around 0 44.6%

    \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
  5. Final simplification44.6%

    \[\leadsto \frac{a}{k \cdot \left(k + 10\right) + 1} \]

Alternative 11: 27.0% accurate, 16.1× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;m \leq -0.00295:\\ \;\;\;\;0.1 \cdot \frac{a}{k}\\ \mathbf{else}:\\ \;\;\;\;a\\ \end{array} \end{array} \]
(FPCore (a k m) :precision binary64 (if (<= m -0.00295) (* 0.1 (/ a k)) a))
double code(double a, double k, double m) {
	double tmp;
	if (m <= -0.00295) {
		tmp = 0.1 * (a / k);
	} else {
		tmp = a;
	}
	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) :: tmp
    if (m <= (-0.00295d0)) then
        tmp = 0.1d0 * (a / k)
    else
        tmp = a
    end if
    code = tmp
end function
public static double code(double a, double k, double m) {
	double tmp;
	if (m <= -0.00295) {
		tmp = 0.1 * (a / k);
	} else {
		tmp = a;
	}
	return tmp;
}
def code(a, k, m):
	tmp = 0
	if m <= -0.00295:
		tmp = 0.1 * (a / k)
	else:
		tmp = a
	return tmp
function code(a, k, m)
	tmp = 0.0
	if (m <= -0.00295)
		tmp = Float64(0.1 * Float64(a / k));
	else
		tmp = a;
	end
	return tmp
end
function tmp_2 = code(a, k, m)
	tmp = 0.0;
	if (m <= -0.00295)
		tmp = 0.1 * (a / k);
	else
		tmp = a;
	end
	tmp_2 = tmp;
end
code[a_, k_, m_] := If[LessEqual[m, -0.00295], N[(0.1 * N[(a / k), $MachinePrecision]), $MachinePrecision], a]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.00295:\\
\;\;\;\;0.1 \cdot \frac{a}{k}\\

\mathbf{else}:\\
\;\;\;\;a\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if m < -0.00294999999999999993

    1. Initial program 100.0%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out100.0%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified100.0%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 39.1%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 22.0%

      \[\leadsto \frac{a}{1 + \color{blue}{10 \cdot k}} \]
    6. Step-by-step derivation
      1. *-commutative22.0%

        \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    7. Simplified22.0%

      \[\leadsto \frac{a}{1 + \color{blue}{k \cdot 10}} \]
    8. Taylor expanded in k around inf 28.1%

      \[\leadsto \color{blue}{0.1 \cdot \frac{a}{k}} \]

    if -0.00294999999999999993 < m

    1. Initial program 87.2%

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
    2. Step-by-step derivation
      1. sqr-neg87.2%

        \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
      2. associate-+l+87.2%

        \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
      3. sqr-neg87.2%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
      4. distribute-rgt-out87.2%

        \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
    3. Simplified87.2%

      \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
    4. Taylor expanded in m around 0 47.6%

      \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
    5. Taylor expanded in k around 0 27.1%

      \[\leadsto \color{blue}{a} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification27.4%

    \[\leadsto \begin{array}{l} \mathbf{if}\;m \leq -0.00295:\\ \;\;\;\;0.1 \cdot \frac{a}{k}\\ \mathbf{else}:\\ \;\;\;\;a\\ \end{array} \]

Alternative 12: 20.5% accurate, 114.0× speedup?

\[\begin{array}{l} \\ a \end{array} \]
(FPCore (a k m) :precision binary64 a)
double code(double a, double k, double m) {
	return a;
}
real(8) function code(a, k, m)
    real(8), intent (in) :: a
    real(8), intent (in) :: k
    real(8), intent (in) :: m
    code = a
end function
public static double code(double a, double k, double m) {
	return a;
}
def code(a, k, m):
	return a
function code(a, k, m)
	return a
end
function tmp = code(a, k, m)
	tmp = a;
end
code[a_, k_, m_] := a
\begin{array}{l}

\\
a
\end{array}
Derivation
  1. Initial program 91.7%

    \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k} \]
  2. Step-by-step derivation
    1. sqr-neg91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + \color{blue}{\left(-k\right) \cdot \left(-k\right)}} \]
    2. associate-+l+91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{\color{blue}{1 + \left(10 \cdot k + \left(-k\right) \cdot \left(-k\right)\right)}} \]
    3. sqr-neg91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{1 + \left(10 \cdot k + \color{blue}{k \cdot k}\right)} \]
    4. distribute-rgt-out91.7%

      \[\leadsto \frac{a \cdot {k}^{m}}{1 + \color{blue}{k \cdot \left(10 + k\right)}} \]
  3. Simplified91.7%

    \[\leadsto \color{blue}{\frac{a \cdot {k}^{m}}{1 + k \cdot \left(10 + k\right)}} \]
  4. Taylor expanded in m around 0 44.6%

    \[\leadsto \color{blue}{\frac{a}{1 + k \cdot \left(10 + k\right)}} \]
  5. Taylor expanded in k around 0 19.0%

    \[\leadsto \color{blue}{a} \]
  6. Final simplification19.0%

    \[\leadsto a \]

Reproduce

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