
(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:
Herbie found 17 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(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}
(FPCore (a k m) :precision binary64 (if (<= k 3.7e-7) (* a (pow k m)) (* (/ (pow k m) k) (/ a k))))
double code(double a, double k, double m) {
double tmp;
if (k <= 3.7e-7) {
tmp = a * pow(k, m);
} else {
tmp = (pow(k, m) / k) * (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 <= 3.7d-7) then
tmp = a * (k ** m)
else
tmp = ((k ** m) / k) * (a / k)
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (k <= 3.7e-7) {
tmp = a * Math.pow(k, m);
} else {
tmp = (Math.pow(k, m) / k) * (a / k);
}
return tmp;
}
def code(a, k, m): tmp = 0 if k <= 3.7e-7: tmp = a * math.pow(k, m) else: tmp = (math.pow(k, m) / k) * (a / k) return tmp
function code(a, k, m) tmp = 0.0 if (k <= 3.7e-7) tmp = Float64(a * (k ^ m)); else tmp = Float64(Float64((k ^ m) / k) * Float64(a / k)); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (k <= 3.7e-7) tmp = a * (k ^ m); else tmp = ((k ^ m) / k) * (a / k); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[k, 3.7e-7], N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision], N[(N[(N[Power[k, m], $MachinePrecision] / k), $MachinePrecision] * N[(a / k), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;k \leq 3.7 \cdot 10^{-7}:\\
\;\;\;\;a \cdot {k}^{m}\\
\mathbf{else}:\\
\;\;\;\;\frac{{k}^{m}}{k} \cdot \frac{a}{k}\\
\end{array}
\end{array}
if k < 3.70000000000000004e-7Initial program 94.5%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f6499.7
Simplified99.7%
if 3.70000000000000004e-7 < k Initial program 83.6%
Taylor expanded in k around inf
lower-/.f64N/A
mul-1-negN/A
*-commutativeN/A
distribute-lft-neg-inN/A
exp-prodN/A
log-recN/A
remove-double-negN/A
rem-exp-logN/A
lower-*.f64N/A
lower-pow.f64N/A
unpow2N/A
lower-*.f6483.5
Simplified83.5%
remove-double-divN/A
lift-pow.f64N/A
times-fracN/A
remove-double-divN/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f64N/A
lower-/.f6496.5
Applied egg-rr96.5%
(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 (fma k k -100.0))
(/ (- (/ (+ -10.0 (/ -100.0 k)) (- k)) -1.0) k)
1.0))
(if (<= t_0 1e+305)
(/ a (fma k 10.0 (fma k k 1.0)))
(if (<= t_0 INFINITY)
(* a (/ (+ 1.0 (/ (+ -10.0 (/ 99.0 k)) k)) (* k k)))
(* a (fma k (fma k 99.0 -10.0) 1.0)))))))
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 * fma(k, k, -100.0)), ((((-10.0 + (-100.0 / k)) / -k) - -1.0) / k), 1.0);
} else if (t_0 <= 1e+305) {
tmp = a / fma(k, 10.0, fma(k, k, 1.0));
} else if (t_0 <= ((double) INFINITY)) {
tmp = a * ((1.0 + ((-10.0 + (99.0 / k)) / k)) / (k * k));
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
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 * fma(k, k, -100.0)), Float64(Float64(Float64(Float64(-10.0 + Float64(-100.0 / k)) / Float64(-k)) - -1.0) / k), 1.0)); elseif (t_0 <= 1e+305) tmp = Float64(a / fma(k, 10.0, fma(k, k, 1.0))); elseif (t_0 <= Inf) tmp = Float64(a * Float64(Float64(1.0 + Float64(Float64(-10.0 + Float64(99.0 / k)) / k)) / Float64(k * k))); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); 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 * k + -100.0), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(-10.0 + N[(-100.0 / k), $MachinePrecision]), $MachinePrecision] / (-k)), $MachinePrecision] - -1.0), $MachinePrecision] / k), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], N[(a / N[(k * 10.0 + N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(a * N[(N[(1.0 + N[(N[(-10.0 + N[(99.0 / k), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $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 \mathsf{fma}\left(k, k, -100\right), \frac{\frac{-10 + \frac{-100}{k}}{-k} - -1}{k}, 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+305}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;a \cdot \frac{1 + \frac{-10 + \frac{99}{k}}{k}}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6448.9
Simplified48.9%
lift-+.f64N/A
*-commutativeN/A
lift-+.f64N/A
flip-+N/A
associate-*l/N/A
div-invN/A
lower-fma.f64N/A
lower-*.f64N/A
lift-*.f64N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
lower-/.f64N/A
sub-negN/A
lower-+.f64N/A
metadata-eval50.0
Applied egg-rr50.0%
Taylor expanded in k around -inf
mul-1-negN/A
lower-neg.f64N/A
lower-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
lower-+.f64N/A
associate-*r/N/A
lower-/.f64N/A
distribute-lft-inN/A
metadata-evalN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
metadata-evalN/A
lower-+.f64N/A
lower-/.f6454.4
Simplified54.4%
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))) < 9.9999999999999994e304Initial program 99.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6496.2
Simplified96.2%
+-commutativeN/A
distribute-lft-inN/A
lift-*.f64N/A
associate-+r+N/A
lift-*.f64N/A
lift-fma.f64N/A
lift-fma.f6496.2
Applied egg-rr96.2%
if 9.9999999999999994e304 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f643.2
Simplified3.2%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f643.2
Applied egg-rr3.2%
Taylor expanded in k around inf
lower-/.f64N/A
associate--l+N/A
lower-+.f64N/A
unpow2N/A
associate-/r*N/A
metadata-evalN/A
associate-*r/N/A
associate-*r/N/A
metadata-evalN/A
div-subN/A
lower-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
lower-+.f64N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f64N/A
unpow2N/A
lower-*.f6440.7
Simplified40.7%
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))) Initial program 0.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f641.6
Simplified1.6%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f641.6
Applied egg-rr1.6%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6494.1
Simplified94.1%
Final simplification62.0%
(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 (fma k k -100.0)) (/ (+ 1.0 (/ 10.0 k)) k) 1.0))
(if (<= t_0 1e+305)
(/ a (fma k 10.0 (fma k k 1.0)))
(if (<= t_0 INFINITY)
(* a (/ (+ 1.0 (/ (+ -10.0 (/ 99.0 k)) k)) (* k k)))
(* a (fma k (fma k 99.0 -10.0) 1.0)))))))
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 * fma(k, k, -100.0)), ((1.0 + (10.0 / k)) / k), 1.0);
} else if (t_0 <= 1e+305) {
tmp = a / fma(k, 10.0, fma(k, k, 1.0));
} else if (t_0 <= ((double) INFINITY)) {
tmp = a * ((1.0 + ((-10.0 + (99.0 / k)) / k)) / (k * k));
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
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 * fma(k, k, -100.0)), Float64(Float64(1.0 + Float64(10.0 / k)) / k), 1.0)); elseif (t_0 <= 1e+305) tmp = Float64(a / fma(k, 10.0, fma(k, k, 1.0))); elseif (t_0 <= Inf) tmp = Float64(a * Float64(Float64(1.0 + Float64(Float64(-10.0 + Float64(99.0 / k)) / k)) / Float64(k * k))); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); 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 * k + -100.0), $MachinePrecision]), $MachinePrecision] * N[(N[(1.0 + N[(10.0 / k), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], N[(a / N[(k * 10.0 + N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(a * N[(N[(1.0 + N[(N[(-10.0 + N[(99.0 / k), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $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 \mathsf{fma}\left(k, k, -100\right), \frac{1 + \frac{10}{k}}{k}, 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+305}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;a \cdot \frac{1 + \frac{-10 + \frac{99}{k}}{k}}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6448.9
Simplified48.9%
lift-+.f64N/A
*-commutativeN/A
lift-+.f64N/A
flip-+N/A
associate-*l/N/A
div-invN/A
lower-fma.f64N/A
lower-*.f64N/A
lift-*.f64N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
lower-/.f64N/A
sub-negN/A
lower-+.f64N/A
metadata-eval50.0
Applied egg-rr50.0%
Taylor expanded in k around inf
lower-/.f64N/A
lower-+.f64N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f6448.7
Simplified48.7%
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))) < 9.9999999999999994e304Initial program 99.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6496.2
Simplified96.2%
+-commutativeN/A
distribute-lft-inN/A
lift-*.f64N/A
associate-+r+N/A
lift-*.f64N/A
lift-fma.f64N/A
lift-fma.f6496.2
Applied egg-rr96.2%
if 9.9999999999999994e304 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f643.2
Simplified3.2%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f643.2
Applied egg-rr3.2%
Taylor expanded in k around inf
lower-/.f64N/A
associate--l+N/A
lower-+.f64N/A
unpow2N/A
associate-/r*N/A
metadata-evalN/A
associate-*r/N/A
associate-*r/N/A
metadata-evalN/A
div-subN/A
lower-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
lower-+.f64N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f64N/A
unpow2N/A
lower-*.f6440.7
Simplified40.7%
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))) Initial program 0.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f641.6
Simplified1.6%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f641.6
Applied egg-rr1.6%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6494.1
Simplified94.1%
Final simplification58.0%
(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
(* (fma k (* k k) 1000.0) (fma k (fma k (* k -1e-5) 0.001) 0.01))
1.0))
(if (<= t_0 1e+305)
(/ a (fma k 10.0 (fma k k 1.0)))
(if (<= t_0 INFINITY)
(* a (/ (+ 1.0 (/ (+ -10.0 (/ 99.0 k)) k)) (* k k)))
(* a (fma k (fma k 99.0 -10.0) 1.0)))))))
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, (fma(k, (k * k), 1000.0) * fma(k, fma(k, (k * -1e-5), 0.001), 0.01)), 1.0);
} else if (t_0 <= 1e+305) {
tmp = a / fma(k, 10.0, fma(k, k, 1.0));
} else if (t_0 <= ((double) INFINITY)) {
tmp = a * ((1.0 + ((-10.0 + (99.0 / k)) / k)) / (k * k));
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
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(k, Float64(fma(k, Float64(k * k), 1000.0) * fma(k, fma(k, Float64(k * -1e-5), 0.001), 0.01)), 1.0)); elseif (t_0 <= 1e+305) tmp = Float64(a / fma(k, 10.0, fma(k, k, 1.0))); elseif (t_0 <= Inf) tmp = Float64(a * Float64(Float64(1.0 + Float64(Float64(-10.0 + Float64(99.0 / k)) / k)) / Float64(k * k))); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); 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[(k * N[(N[(k * N[(k * k), $MachinePrecision] + 1000.0), $MachinePrecision] * N[(k * N[(k * N[(k * -1e-5), $MachinePrecision] + 0.001), $MachinePrecision] + 0.01), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], N[(a / N[(k * 10.0 + N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(a * N[(N[(1.0 + N[(N[(-10.0 + N[(99.0 / k), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $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, \mathsf{fma}\left(k, k \cdot k, 1000\right) \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, k \cdot -1 \cdot 10^{-5}, 0.001\right), 0.01\right), 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+305}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;a \cdot \frac{1 + \frac{-10 + \frac{99}{k}}{k}}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6448.9
Simplified48.9%
flip3-+N/A
div-invN/A
lower-*.f64N/A
cube-multN/A
lift-*.f64N/A
lower-fma.f64N/A
metadata-evalN/A
lower-/.f64N/A
lift-*.f64N/A
+-commutativeN/A
associate-+l-N/A
lower--.f64N/A
metadata-evalN/A
lift-*.f64N/A
distribute-lft-out--N/A
lower-*.f64N/A
lower--.f6428.2
Applied egg-rr28.2%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
+-commutativeN/A
unpow2N/A
associate-*r*N/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f6450.4
Simplified50.4%
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))) < 9.9999999999999994e304Initial program 99.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6496.2
Simplified96.2%
+-commutativeN/A
distribute-lft-inN/A
lift-*.f64N/A
associate-+r+N/A
lift-*.f64N/A
lift-fma.f64N/A
lift-fma.f6496.2
Applied egg-rr96.2%
if 9.9999999999999994e304 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f643.2
Simplified3.2%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f643.2
Applied egg-rr3.2%
Taylor expanded in k around inf
lower-/.f64N/A
associate--l+N/A
lower-+.f64N/A
unpow2N/A
associate-/r*N/A
metadata-evalN/A
associate-*r/N/A
associate-*r/N/A
metadata-evalN/A
div-subN/A
lower-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
lower-+.f64N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f64N/A
unpow2N/A
lower-*.f6440.7
Simplified40.7%
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))) Initial program 0.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f641.6
Simplified1.6%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f641.6
Applied egg-rr1.6%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6494.1
Simplified94.1%
Final simplification59.2%
(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 (fma k k -100.0))
(fma k (fma k (fma k -0.0001 -0.001) -0.01) -0.1)
1.0))
(if (<= t_0 1e+305)
(/ a (fma k 10.0 (fma k k 1.0)))
(if (<= t_0 INFINITY)
(* a (/ (+ 1.0 (/ (+ -10.0 (/ 99.0 k)) k)) (* k k)))
(* a (fma k (fma k 99.0 -10.0) 1.0)))))))
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 * fma(k, k, -100.0)), fma(k, fma(k, fma(k, -0.0001, -0.001), -0.01), -0.1), 1.0);
} else if (t_0 <= 1e+305) {
tmp = a / fma(k, 10.0, fma(k, k, 1.0));
} else if (t_0 <= ((double) INFINITY)) {
tmp = a * ((1.0 + ((-10.0 + (99.0 / k)) / k)) / (k * k));
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
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 * fma(k, k, -100.0)), fma(k, fma(k, fma(k, -0.0001, -0.001), -0.01), -0.1), 1.0)); elseif (t_0 <= 1e+305) tmp = Float64(a / fma(k, 10.0, fma(k, k, 1.0))); elseif (t_0 <= Inf) tmp = Float64(a * Float64(Float64(1.0 + Float64(Float64(-10.0 + Float64(99.0 / k)) / k)) / Float64(k * k))); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); 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 * k + -100.0), $MachinePrecision]), $MachinePrecision] * N[(k * N[(k * N[(k * -0.0001 + -0.001), $MachinePrecision] + -0.01), $MachinePrecision] + -0.1), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], N[(a / N[(k * 10.0 + N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(a * N[(N[(1.0 + N[(N[(-10.0 + N[(99.0 / k), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $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 \mathsf{fma}\left(k, k, -100\right), \mathsf{fma}\left(k, \mathsf{fma}\left(k, \mathsf{fma}\left(k, -0.0001, -0.001\right), -0.01\right), -0.1\right), 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+305}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;a \cdot \frac{1 + \frac{-10 + \frac{99}{k}}{k}}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6448.9
Simplified48.9%
lift-+.f64N/A
*-commutativeN/A
lift-+.f64N/A
flip-+N/A
associate-*l/N/A
div-invN/A
lower-fma.f64N/A
lower-*.f64N/A
lift-*.f64N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
lower-/.f64N/A
sub-negN/A
lower-+.f64N/A
metadata-eval50.0
Applied egg-rr50.0%
Taylor expanded in k around 0
sub-negN/A
lower-fma.f64N/A
sub-negN/A
metadata-evalN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f64N/A
metadata-eval50.3
Simplified50.3%
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))) < 9.9999999999999994e304Initial program 99.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6496.2
Simplified96.2%
+-commutativeN/A
distribute-lft-inN/A
lift-*.f64N/A
associate-+r+N/A
lift-*.f64N/A
lift-fma.f64N/A
lift-fma.f6496.2
Applied egg-rr96.2%
if 9.9999999999999994e304 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f643.2
Simplified3.2%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f643.2
Applied egg-rr3.2%
Taylor expanded in k around inf
lower-/.f64N/A
associate--l+N/A
lower-+.f64N/A
unpow2N/A
associate-/r*N/A
metadata-evalN/A
associate-*r/N/A
associate-*r/N/A
metadata-evalN/A
div-subN/A
lower-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
lower-+.f64N/A
associate-*r/N/A
metadata-evalN/A
lower-/.f64N/A
unpow2N/A
lower-*.f6440.7
Simplified40.7%
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))) Initial program 0.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f641.6
Simplified1.6%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f641.6
Applied egg-rr1.6%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6494.1
Simplified94.1%
Final simplification59.1%
(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 (fma k k -100.0))
(fma k (fma k (fma k -0.0001 -0.001) -0.01) -0.1)
1.0))
(if (<= t_0 1e+305)
(/ 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))
(* a (fma k (fma k 99.0 -10.0) 1.0)))))))
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 * fma(k, k, -100.0)), fma(k, fma(k, fma(k, -0.0001, -0.001), -0.01), -0.1), 1.0);
} else if (t_0 <= 1e+305) {
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 = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
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 * fma(k, k, -100.0)), fma(k, fma(k, fma(k, -0.0001, -0.001), -0.01), -0.1), 1.0)); elseif (t_0 <= 1e+305) 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 = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); 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 * k + -100.0), $MachinePrecision]), $MachinePrecision] * N[(k * N[(k * N[(k * -0.0001 + -0.001), $MachinePrecision] + -0.01), $MachinePrecision] + -0.1), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], 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[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $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 \mathsf{fma}\left(k, k, -100\right), \mathsf{fma}\left(k, \mathsf{fma}\left(k, \mathsf{fma}\left(k, -0.0001, -0.001\right), -0.01\right), -0.1\right), 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+305}:\\
\;\;\;\;\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}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6448.9
Simplified48.9%
lift-+.f64N/A
*-commutativeN/A
lift-+.f64N/A
flip-+N/A
associate-*l/N/A
div-invN/A
lower-fma.f64N/A
lower-*.f64N/A
lift-*.f64N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
lower-/.f64N/A
sub-negN/A
lower-+.f64N/A
metadata-eval50.0
Applied egg-rr50.0%
Taylor expanded in k around 0
sub-negN/A
lower-fma.f64N/A
sub-negN/A
metadata-evalN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f64N/A
metadata-eval50.3
Simplified50.3%
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))) < 9.9999999999999994e304Initial program 99.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6496.2
Simplified96.2%
+-commutativeN/A
distribute-lft-inN/A
lift-*.f64N/A
associate-+r+N/A
lift-*.f64N/A
lift-fma.f64N/A
lift-fma.f6496.2
Applied egg-rr96.2%
if 9.9999999999999994e304 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f643.2
Simplified3.2%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f643.2
Applied egg-rr3.2%
Taylor expanded in k around inf
Simplified32.5%
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))) Initial program 0.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f641.6
Simplified1.6%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f641.6
Applied egg-rr1.6%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6494.1
Simplified94.1%
Final simplification58.4%
(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 (fma k k -100.0))
(fma k (fma k (fma k -0.0001 -0.001) -0.01) -0.1)
1.0))
(if (<= t_0 1e+305)
(/ a (fma k 10.0 (fma k k 1.0)))
(if (<= t_0 INFINITY)
(/ a (* k k))
(* a (fma k (fma k 99.0 -10.0) 1.0)))))))
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 * fma(k, k, -100.0)), fma(k, fma(k, fma(k, -0.0001, -0.001), -0.01), -0.1), 1.0);
} else if (t_0 <= 1e+305) {
tmp = a / fma(k, 10.0, fma(k, k, 1.0));
} else if (t_0 <= ((double) INFINITY)) {
tmp = a / (k * k);
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
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 * fma(k, k, -100.0)), fma(k, fma(k, fma(k, -0.0001, -0.001), -0.01), -0.1), 1.0)); elseif (t_0 <= 1e+305) tmp = Float64(a / fma(k, 10.0, fma(k, k, 1.0))); elseif (t_0 <= Inf) tmp = Float64(a / Float64(k * k)); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); 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 * k + -100.0), $MachinePrecision]), $MachinePrecision] * N[(k * N[(k * N[(k * -0.0001 + -0.001), $MachinePrecision] + -0.01), $MachinePrecision] + -0.1), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], N[(a / N[(k * 10.0 + N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $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 \mathsf{fma}\left(k, k, -100\right), \mathsf{fma}\left(k, \mathsf{fma}\left(k, \mathsf{fma}\left(k, -0.0001, -0.001\right), -0.01\right), -0.1\right), 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+305}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6448.9
Simplified48.9%
lift-+.f64N/A
*-commutativeN/A
lift-+.f64N/A
flip-+N/A
associate-*l/N/A
div-invN/A
lower-fma.f64N/A
lower-*.f64N/A
lift-*.f64N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
lower-/.f64N/A
sub-negN/A
lower-+.f64N/A
metadata-eval50.0
Applied egg-rr50.0%
Taylor expanded in k around 0
sub-negN/A
lower-fma.f64N/A
sub-negN/A
metadata-evalN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f64N/A
metadata-eval50.3
Simplified50.3%
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))) < 9.9999999999999994e304Initial program 99.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6496.2
Simplified96.2%
+-commutativeN/A
distribute-lft-inN/A
lift-*.f64N/A
associate-+r+N/A
lift-*.f64N/A
lift-fma.f64N/A
lift-fma.f6496.2
Applied egg-rr96.2%
if 9.9999999999999994e304 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f643.2
Simplified3.2%
Taylor expanded in k around inf
lower-/.f64N/A
unpow2N/A
lower-*.f6432.3
Simplified32.3%
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))) Initial program 0.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f641.6
Simplified1.6%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f641.6
Applied egg-rr1.6%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6494.1
Simplified94.1%
Final simplification58.4%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ (* a (pow k m)) (+ (+ 1.0 (* k 10.0)) (* k k)))))
(if (<= t_0 2e-320)
(/ a (* k (+ k 10.0)))
(if (<= t_0 1e+305)
(/ a (fma k 10.0 1.0))
(if (<= t_0 INFINITY)
(/ a (* k k))
(* a (fma k (fma k 99.0 -10.0) 1.0)))))))
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 <= 2e-320) {
tmp = a / (k * (k + 10.0));
} else if (t_0 <= 1e+305) {
tmp = a / fma(k, 10.0, 1.0);
} else if (t_0 <= ((double) INFINITY)) {
tmp = a / (k * k);
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
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 <= 2e-320) tmp = Float64(a / Float64(k * Float64(k + 10.0))); elseif (t_0 <= 1e+305) tmp = Float64(a / fma(k, 10.0, 1.0)); elseif (t_0 <= Inf) tmp = Float64(a / Float64(k * k)); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); 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, 2e-320], N[(a / N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], N[(a / N[(k * 10.0 + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $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 2 \cdot 10^{-320}:\\
\;\;\;\;\frac{a}{k \cdot \left(k + 10\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+305}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, 1\right)}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.99998e-320Initial program 96.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6448.9
Simplified48.9%
Taylor expanded in k around inf
unpow2N/A
associate-*l*N/A
lower-*.f64N/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6437.4
Simplified37.4%
if 1.99998e-320 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 9.9999999999999994e304Initial program 99.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6496.2
Simplified96.2%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
lower-fma.f6469.5
Simplified69.5%
if 9.9999999999999994e304 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f643.2
Simplified3.2%
Taylor expanded in k around inf
lower-/.f64N/A
unpow2N/A
lower-*.f6432.3
Simplified32.3%
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))) Initial program 0.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f641.6
Simplified1.6%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f641.6
Applied egg-rr1.6%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6494.1
Simplified94.1%
Final simplification45.5%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ a (* k k)))
(t_1 (/ (* a (pow k m)) (+ (+ 1.0 (* k 10.0)) (* k k)))))
(if (<= t_1 2e-320)
t_0
(if (<= t_1 1e+305)
(/ a (fma k 10.0 1.0))
(if (<= t_1 INFINITY) t_0 (* a (fma k (fma k 99.0 -10.0) 1.0)))))))
double code(double a, double k, double m) {
double t_0 = a / (k * k);
double t_1 = (a * pow(k, m)) / ((1.0 + (k * 10.0)) + (k * k));
double tmp;
if (t_1 <= 2e-320) {
tmp = t_0;
} else if (t_1 <= 1e+305) {
tmp = a / fma(k, 10.0, 1.0);
} else if (t_1 <= ((double) INFINITY)) {
tmp = t_0;
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a / Float64(k * k)) t_1 = Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(k * 10.0)) + Float64(k * k))) tmp = 0.0 if (t_1 <= 2e-320) tmp = t_0; elseif (t_1 <= 1e+305) tmp = Float64(a / fma(k, 10.0, 1.0)); elseif (t_1 <= Inf) tmp = t_0; else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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$1, 2e-320], t$95$0, If[LessEqual[t$95$1, 1e+305], N[(a / N[(k * 10.0 + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], t$95$0, N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{k \cdot k}\\
t_1 := \frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k}\\
\mathbf{if}\;t\_1 \leq 2 \cdot 10^{-320}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;t\_1 \leq 10^{+305}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, 1\right)}\\
\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.99998e-320 or 9.9999999999999994e304 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 96.4%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6443.7
Simplified43.7%
Taylor expanded in k around inf
lower-/.f64N/A
unpow2N/A
lower-*.f6441.0
Simplified41.0%
if 1.99998e-320 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 9.9999999999999994e304Initial program 99.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6496.2
Simplified96.2%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
lower-fma.f6469.5
Simplified69.5%
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))) Initial program 0.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f641.6
Simplified1.6%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f641.6
Applied egg-rr1.6%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6494.1
Simplified94.1%
Final simplification48.8%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ a (* k k)))
(t_1 (/ (* a (pow k m)) (+ (+ 1.0 (* k 10.0)) (* k k))))
(t_2 (* a (fma k (fma k 99.0 -10.0) 1.0))))
(if (<= t_1 2e-320)
t_0
(if (<= t_1 1e+305) t_2 (if (<= t_1 INFINITY) t_0 t_2)))))
double code(double a, double k, double m) {
double t_0 = a / (k * k);
double t_1 = (a * pow(k, m)) / ((1.0 + (k * 10.0)) + (k * k));
double t_2 = a * fma(k, fma(k, 99.0, -10.0), 1.0);
double tmp;
if (t_1 <= 2e-320) {
tmp = t_0;
} else if (t_1 <= 1e+305) {
tmp = t_2;
} else if (t_1 <= ((double) INFINITY)) {
tmp = t_0;
} else {
tmp = t_2;
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a / Float64(k * k)) t_1 = Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(k * 10.0)) + Float64(k * k))) t_2 = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)) tmp = 0.0 if (t_1 <= 2e-320) tmp = t_0; elseif (t_1 <= 1e+305) tmp = t_2; elseif (t_1 <= Inf) tmp = t_0; else tmp = t_2; end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = 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]}, Block[{t$95$2 = N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 2e-320], t$95$0, If[LessEqual[t$95$1, 1e+305], t$95$2, If[LessEqual[t$95$1, Infinity], t$95$0, t$95$2]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{k \cdot k}\\
t_1 := \frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k}\\
t_2 := a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\mathbf{if}\;t\_1 \leq 2 \cdot 10^{-320}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;t\_1 \leq 10^{+305}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.99998e-320 or 9.9999999999999994e304 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 96.4%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6443.7
Simplified43.7%
Taylor expanded in k around inf
lower-/.f64N/A
unpow2N/A
lower-*.f6441.0
Simplified41.0%
if 1.99998e-320 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 9.9999999999999994e304 or +inf.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) Initial program 69.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6467.0
Simplified67.0%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f6467.0
Applied egg-rr67.0%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6476.4
Simplified76.4%
Final simplification48.6%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (* a (pow k m))))
(if (<= m -5.5e-8)
t_0
(if (<= m 0.00012) (/ a (fma k 10.0 (fma k k 1.0))) t_0))))
double code(double a, double k, double m) {
double t_0 = a * pow(k, m);
double tmp;
if (m <= -5.5e-8) {
tmp = t_0;
} else if (m <= 0.00012) {
tmp = a / fma(k, 10.0, fma(k, k, 1.0));
} else {
tmp = t_0;
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a * (k ^ m)) tmp = 0.0 if (m <= -5.5e-8) tmp = t_0; elseif (m <= 0.00012) tmp = Float64(a / fma(k, 10.0, fma(k, k, 1.0))); else tmp = t_0; end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[m, -5.5e-8], t$95$0, If[LessEqual[m, 0.00012], N[(a / N[(k * 10.0 + N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := a \cdot {k}^{m}\\
\mathbf{if}\;m \leq -5.5 \cdot 10^{-8}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;m \leq 0.00012:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if m < -5.5000000000000003e-8 or 1.20000000000000003e-4 < m Initial program 88.8%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f64100.0
Simplified100.0%
if -5.5000000000000003e-8 < m < 1.20000000000000003e-4Initial program 93.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6491.1
Simplified91.1%
+-commutativeN/A
distribute-lft-inN/A
lift-*.f64N/A
associate-+r+N/A
lift-*.f64N/A
lift-fma.f64N/A
lift-fma.f6491.1
Applied egg-rr91.1%
(FPCore (a k m) :precision binary64 (if (<= k 3.7e-7) (* a (pow k m)) (* a (pow k (+ m -2.0)))))
double code(double a, double k, double m) {
double tmp;
if (k <= 3.7e-7) {
tmp = a * pow(k, m);
} else {
tmp = a * pow(k, (m + -2.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 (k <= 3.7d-7) then
tmp = a * (k ** m)
else
tmp = a * (k ** (m + (-2.0d0)))
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (k <= 3.7e-7) {
tmp = a * Math.pow(k, m);
} else {
tmp = a * Math.pow(k, (m + -2.0));
}
return tmp;
}
def code(a, k, m): tmp = 0 if k <= 3.7e-7: tmp = a * math.pow(k, m) else: tmp = a * math.pow(k, (m + -2.0)) return tmp
function code(a, k, m) tmp = 0.0 if (k <= 3.7e-7) tmp = Float64(a * (k ^ m)); else tmp = Float64(a * (k ^ Float64(m + -2.0))); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (k <= 3.7e-7) tmp = a * (k ^ m); else tmp = a * (k ^ (m + -2.0)); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[k, 3.7e-7], N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision], N[(a * N[Power[k, N[(m + -2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;k \leq 3.7 \cdot 10^{-7}:\\
\;\;\;\;a \cdot {k}^{m}\\
\mathbf{else}:\\
\;\;\;\;a \cdot {k}^{\left(m + -2\right)}\\
\end{array}
\end{array}
if k < 3.70000000000000004e-7Initial program 94.5%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f6499.7
Simplified99.7%
if 3.70000000000000004e-7 < k Initial program 83.6%
Taylor expanded in k around inf
lower-/.f64N/A
mul-1-negN/A
*-commutativeN/A
distribute-lft-neg-inN/A
exp-prodN/A
log-recN/A
remove-double-negN/A
rem-exp-logN/A
lower-*.f64N/A
lower-pow.f64N/A
unpow2N/A
lower-*.f6483.5
Simplified83.5%
remove-double-divN/A
lift-pow.f64N/A
times-fracN/A
remove-double-divN/A
times-fracN/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lift-pow.f64N/A
lift-*.f64N/A
pow2N/A
pow-divN/A
lower-pow.f64N/A
sub-negN/A
lower-+.f64N/A
metadata-eval94.1
Applied egg-rr94.1%
Final simplification97.7%
(FPCore (a k m)
:precision binary64
(if (<= m -1.4e+21)
(/ a (* k k))
(if (<= m 2.65e+14)
(/ a (fma k 10.0 (fma k k 1.0)))
(* a (fma k (fma k 99.0 -10.0) 1.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -1.4e+21) {
tmp = a / (k * k);
} else if (m <= 2.65e+14) {
tmp = a / fma(k, 10.0, fma(k, k, 1.0));
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -1.4e+21) tmp = Float64(a / Float64(k * k)); elseif (m <= 2.65e+14) tmp = Float64(a / fma(k, 10.0, fma(k, k, 1.0))); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -1.4e+21], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.65e+14], N[(a / N[(k * 10.0 + N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -1.4 \cdot 10^{+21}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 2.65 \cdot 10^{+14}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, \mathsf{fma}\left(k, k, 1\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if m < -1.4e21Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6439.5
Simplified39.5%
Taylor expanded in k around inf
lower-/.f64N/A
unpow2N/A
lower-*.f6467.7
Simplified67.7%
if -1.4e21 < m < 2.65e14Initial program 92.7%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6487.1
Simplified87.1%
+-commutativeN/A
distribute-lft-inN/A
lift-*.f64N/A
associate-+r+N/A
lift-*.f64N/A
lift-fma.f64N/A
lift-fma.f6487.1
Applied egg-rr87.1%
if 2.65e14 < m Initial program 80.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f643.2
Simplified3.2%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f643.2
Applied egg-rr3.2%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6431.0
Simplified31.0%
Final simplification64.4%
(FPCore (a k m)
:precision binary64
(if (<= m -1.4e+21)
(/ a (* k k))
(if (<= m 2.65e+14)
(/ a (fma k (+ k 10.0) 1.0))
(* a (fma k (fma k 99.0 -10.0) 1.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -1.4e+21) {
tmp = a / (k * k);
} else if (m <= 2.65e+14) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -1.4e+21) tmp = Float64(a / Float64(k * k)); elseif (m <= 2.65e+14) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -1.4e+21], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.65e+14], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -1.4 \cdot 10^{+21}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 2.65 \cdot 10^{+14}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if m < -1.4e21Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6439.5
Simplified39.5%
Taylor expanded in k around inf
lower-/.f64N/A
unpow2N/A
lower-*.f6467.7
Simplified67.7%
if -1.4e21 < m < 2.65e14Initial program 92.7%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6487.1
Simplified87.1%
if 2.65e14 < m Initial program 80.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f643.2
Simplified3.2%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f643.2
Applied egg-rr3.2%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
lower-fma.f6431.0
Simplified31.0%
Final simplification64.4%
(FPCore (a k m) :precision binary64 (let* ((t_0 (/ a (* k k)))) (if (<= k -1e-310) t_0 (if (<= k 3.7e-7) (* a (fma k -10.0 1.0)) t_0))))
double code(double a, double k, double m) {
double t_0 = a / (k * k);
double tmp;
if (k <= -1e-310) {
tmp = t_0;
} else if (k <= 3.7e-7) {
tmp = a * fma(k, -10.0, 1.0);
} else {
tmp = t_0;
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a / Float64(k * k)) tmp = 0.0 if (k <= -1e-310) tmp = t_0; elseif (k <= 3.7e-7) tmp = Float64(a * fma(k, -10.0, 1.0)); else tmp = t_0; end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[k, -1e-310], t$95$0, If[LessEqual[k, 3.7e-7], N[(a * N[(k * -10.0 + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{k \cdot k}\\
\mathbf{if}\;k \leq -1 \cdot 10^{-310}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;k \leq 3.7 \cdot 10^{-7}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, -10, 1\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if k < -9.999999999999969e-311 or 3.70000000000000004e-7 < k Initial program 85.4%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6444.9
Simplified44.9%
Taylor expanded in k around inf
lower-/.f64N/A
unpow2N/A
lower-*.f6449.2
Simplified49.2%
if -9.999999999999969e-311 < k < 3.70000000000000004e-7Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6455.6
Simplified55.6%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f6455.6
Applied egg-rr55.6%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
lower-fma.f6455.6
Simplified55.6%
Final simplification51.5%
(FPCore (a k m) :precision binary64 (* a (fma k -10.0 1.0)))
double code(double a, double k, double m) {
return a * fma(k, -10.0, 1.0);
}
function code(a, k, m) return Float64(a * fma(k, -10.0, 1.0)) end
code[a_, k_, m_] := N[(a * N[(k * -10.0 + 1.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
a \cdot \mathsf{fma}\left(k, -10, 1\right)
\end{array}
Initial program 90.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6448.7
Simplified48.7%
lift-+.f64N/A
lift-fma.f64N/A
div-invN/A
lift-/.f64N/A
*-commutativeN/A
lower-*.f6448.7
Applied egg-rr48.7%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
lower-fma.f6425.0
Simplified25.0%
Final simplification25.0%
(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}
Initial program 90.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
distribute-rgt-inN/A
*-lft-identityN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
lower-+.f6448.7
Simplified48.7%
Taylor expanded in k around 0
Simplified22.2%
/-rgt-identity22.2
Applied egg-rr22.2%
herbie shell --seed 2024215
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))