
(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 18 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 0.25) (* a (pow k m)) (/ (* a (pow k (+ m -1.0))) k)))
double code(double a, double k, double m) {
double tmp;
if (k <= 0.25) {
tmp = a * pow(k, m);
} else {
tmp = (a * pow(k, (m + -1.0))) / 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 <= 0.25d0) then
tmp = a * (k ** m)
else
tmp = (a * (k ** (m + (-1.0d0)))) / k
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (k <= 0.25) {
tmp = a * Math.pow(k, m);
} else {
tmp = (a * Math.pow(k, (m + -1.0))) / k;
}
return tmp;
}
def code(a, k, m): tmp = 0 if k <= 0.25: tmp = a * math.pow(k, m) else: tmp = (a * math.pow(k, (m + -1.0))) / k return tmp
function code(a, k, m) tmp = 0.0 if (k <= 0.25) tmp = Float64(a * (k ^ m)); else tmp = Float64(Float64(a * (k ^ Float64(m + -1.0))) / k); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (k <= 0.25) tmp = a * (k ^ m); else tmp = (a * (k ^ (m + -1.0))) / k; end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[k, 0.25], N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision], N[(N[(a * N[Power[k, N[(m + -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;k \leq 0.25:\\
\;\;\;\;a \cdot {k}^{m}\\
\mathbf{else}:\\
\;\;\;\;\frac{a \cdot {k}^{\left(m + -1\right)}}{k}\\
\end{array}
\end{array}
if k < 0.25Initial program 93.8%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f6499.0
Simplified99.0%
if 0.25 < k Initial program 77.6%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6475.3
Simplified75.3%
*-commutativeN/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f6493.4
Applied egg-rr93.4%
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
div-invN/A
inv-powN/A
pow-prod-upN/A
pow-lowering-pow.f64N/A
+-lowering-+.f6497.5
Applied egg-rr97.5%
Final simplification98.4%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ a (* k k)))
(t_1 (/ (* a (pow k m)) (+ (* k k) (+ (* k 10.0) 1.0)))))
(if (<= t_1 2e-283)
t_0
(if (<= t_1 5e+303)
(/ a (fma k 10.0 1.0))
(if (<= t_1 INFINITY) t_0 (fma (* k k) (* a 98.0) a))))))
double code(double a, double k, double m) {
double t_0 = a / (k * k);
double t_1 = (a * pow(k, m)) / ((k * k) + ((k * 10.0) + 1.0));
double tmp;
if (t_1 <= 2e-283) {
tmp = t_0;
} else if (t_1 <= 5e+303) {
tmp = a / fma(k, 10.0, 1.0);
} else if (t_1 <= ((double) INFINITY)) {
tmp = t_0;
} else {
tmp = fma((k * k), (a * 98.0), a);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a / Float64(k * k)) t_1 = Float64(Float64(a * (k ^ m)) / Float64(Float64(k * k) + Float64(Float64(k * 10.0) + 1.0))) tmp = 0.0 if (t_1 <= 2e-283) tmp = t_0; elseif (t_1 <= 5e+303) tmp = Float64(a / fma(k, 10.0, 1.0)); elseif (t_1 <= Inf) tmp = t_0; else tmp = fma(Float64(k * k), Float64(a * 98.0), a); 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[(k * k), $MachinePrecision] + N[(N[(k * 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 2e-283], t$95$0, If[LessEqual[t$95$1, 5e+303], N[(a / N[(k * 10.0 + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], t$95$0, N[(N[(k * k), $MachinePrecision] * N[(a * 98.0), $MachinePrecision] + a), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{k \cdot k}\\
t_1 := \frac{a \cdot {k}^{m}}{k \cdot k + \left(k \cdot 10 + 1\right)}\\
\mathbf{if}\;t\_1 \leq 2 \cdot 10^{-283}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;t\_1 \leq 5 \cdot 10^{+303}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, 1\right)}\\
\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k \cdot k, a \cdot 98, a\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.99999999999999989e-283 or 4.9999999999999997e303 < (/.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 95.6%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6440.0
Simplified40.0%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6438.1
Simplified38.1%
if 1.99999999999999989e-283 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 4.9999999999999997e303Initial program 99.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6499.2
Simplified99.2%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6467.9
Simplified67.9%
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
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f641.6
Simplified1.6%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f640.0
Applied egg-rr0.0%
Taylor expanded in k around 0
Simplified0.0%
Taylor expanded in k around 0
associate-*r*N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64100.0
Simplified100.0%
Final simplification46.3%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ a (* k k)))
(t_1 (/ (* a (pow k m)) (+ (* k k) (+ (* k 10.0) 1.0)))))
(if (<= t_1 2e-283)
t_0
(if (<= t_1 5e+303)
(* a (fma k (fma k 99.0 -10.0) 1.0))
(if (<= t_1 INFINITY) t_0 (fma (* k k) (* a 98.0) a))))))
double code(double a, double k, double m) {
double t_0 = a / (k * k);
double t_1 = (a * pow(k, m)) / ((k * k) + ((k * 10.0) + 1.0));
double tmp;
if (t_1 <= 2e-283) {
tmp = t_0;
} else if (t_1 <= 5e+303) {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
} else if (t_1 <= ((double) INFINITY)) {
tmp = t_0;
} else {
tmp = fma((k * k), (a * 98.0), a);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a / Float64(k * k)) t_1 = Float64(Float64(a * (k ^ m)) / Float64(Float64(k * k) + Float64(Float64(k * 10.0) + 1.0))) tmp = 0.0 if (t_1 <= 2e-283) tmp = t_0; elseif (t_1 <= 5e+303) tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); elseif (t_1 <= Inf) tmp = t_0; else tmp = fma(Float64(k * k), Float64(a * 98.0), a); 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[(k * k), $MachinePrecision] + N[(N[(k * 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 2e-283], t$95$0, If[LessEqual[t$95$1, 5e+303], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, Infinity], t$95$0, N[(N[(k * k), $MachinePrecision] * N[(a * 98.0), $MachinePrecision] + a), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{k \cdot k}\\
t_1 := \frac{a \cdot {k}^{m}}{k \cdot k + \left(k \cdot 10 + 1\right)}\\
\mathbf{if}\;t\_1 \leq 2 \cdot 10^{-283}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;t\_1 \leq 5 \cdot 10^{+303}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k \cdot k, a \cdot 98, a\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.99999999999999989e-283 or 4.9999999999999997e303 < (/.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 95.6%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6440.0
Simplified40.0%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6438.1
Simplified38.1%
if 1.99999999999999989e-283 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 4.9999999999999997e303Initial program 99.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6499.2
Simplified99.2%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f6499.1
Applied egg-rr99.1%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f6467.6
Simplified67.6%
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
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f641.6
Simplified1.6%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f640.0
Applied egg-rr0.0%
Taylor expanded in k around 0
Simplified0.0%
Taylor expanded in k around 0
associate-*r*N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64100.0
Simplified100.0%
Final simplification46.2%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ a (* k k)))
(t_1 (/ (* a (pow k m)) (+ (* k k) (+ (* k 10.0) 1.0)))))
(if (<= t_1 2e-283)
t_0
(if (<= t_1 5e+303)
(fma a (* k -10.0) a)
(if (<= t_1 INFINITY) t_0 (fma (* k k) (* a 98.0) a))))))
double code(double a, double k, double m) {
double t_0 = a / (k * k);
double t_1 = (a * pow(k, m)) / ((k * k) + ((k * 10.0) + 1.0));
double tmp;
if (t_1 <= 2e-283) {
tmp = t_0;
} else if (t_1 <= 5e+303) {
tmp = fma(a, (k * -10.0), a);
} else if (t_1 <= ((double) INFINITY)) {
tmp = t_0;
} else {
tmp = fma((k * k), (a * 98.0), a);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a / Float64(k * k)) t_1 = Float64(Float64(a * (k ^ m)) / Float64(Float64(k * k) + Float64(Float64(k * 10.0) + 1.0))) tmp = 0.0 if (t_1 <= 2e-283) tmp = t_0; elseif (t_1 <= 5e+303) tmp = fma(a, Float64(k * -10.0), a); elseif (t_1 <= Inf) tmp = t_0; else tmp = fma(Float64(k * k), Float64(a * 98.0), a); 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[(k * k), $MachinePrecision] + N[(N[(k * 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 2e-283], t$95$0, If[LessEqual[t$95$1, 5e+303], N[(a * N[(k * -10.0), $MachinePrecision] + a), $MachinePrecision], If[LessEqual[t$95$1, Infinity], t$95$0, N[(N[(k * k), $MachinePrecision] * N[(a * 98.0), $MachinePrecision] + a), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{k \cdot k}\\
t_1 := \frac{a \cdot {k}^{m}}{k \cdot k + \left(k \cdot 10 + 1\right)}\\
\mathbf{if}\;t\_1 \leq 2 \cdot 10^{-283}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;t\_1 \leq 5 \cdot 10^{+303}:\\
\;\;\;\;\mathsf{fma}\left(a, k \cdot -10, a\right)\\
\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k \cdot k, a \cdot 98, a\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.99999999999999989e-283 or 4.9999999999999997e303 < (/.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 95.6%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6440.0
Simplified40.0%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6438.1
Simplified38.1%
if 1.99999999999999989e-283 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 4.9999999999999997e303Initial program 99.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6499.2
Simplified99.2%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f6465.0
Simplified65.0%
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
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f641.6
Simplified1.6%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f640.0
Applied egg-rr0.0%
Taylor expanded in k around 0
Simplified0.0%
Taylor expanded in k around 0
associate-*r*N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64100.0
Simplified100.0%
Final simplification46.0%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (* a (pow k m))))
(if (<= m -1.35e-5)
t_0
(if (<= m 0.045) (/ a (fma k (+ k 10.0) 1.0)) t_0))))
double code(double a, double k, double m) {
double t_0 = a * pow(k, m);
double tmp;
if (m <= -1.35e-5) {
tmp = t_0;
} else if (m <= 0.045) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = t_0;
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a * (k ^ m)) tmp = 0.0 if (m <= -1.35e-5) tmp = t_0; elseif (m <= 0.045) tmp = Float64(a / fma(k, Float64(k + 10.0), 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, -1.35e-5], t$95$0, If[LessEqual[m, 0.045], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := a \cdot {k}^{m}\\
\mathbf{if}\;m \leq -1.35 \cdot 10^{-5}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;m \leq 0.045:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if m < -1.3499999999999999e-5 or 0.044999999999999998 < m Initial program 86.6%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f64100.0
Simplified100.0%
if -1.3499999999999999e-5 < m < 0.044999999999999998Initial program 89.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6488.3
Simplified88.3%
Final simplification95.8%
(FPCore (a k m) :precision binary64 (if (<= k 0.25) (* a (pow k m)) (* a (pow k (+ m -2.0)))))
double code(double a, double k, double m) {
double tmp;
if (k <= 0.25) {
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 <= 0.25d0) 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 <= 0.25) {
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 <= 0.25: 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 <= 0.25) 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 <= 0.25) tmp = a * (k ^ m); else tmp = a * (k ^ (m + -2.0)); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[k, 0.25], 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 0.25:\\
\;\;\;\;a \cdot {k}^{m}\\
\mathbf{else}:\\
\;\;\;\;a \cdot {k}^{\left(m + -2\right)}\\
\end{array}
\end{array}
if k < 0.25Initial program 93.8%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f6499.0
Simplified99.0%
if 0.25 < k Initial program 77.6%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6475.3
Simplified75.3%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
pow2N/A
pow-divN/A
pow-lowering-pow.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval88.3
Applied egg-rr88.3%
Final simplification95.0%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (* k (* k (* k k)))))
(if (<= m -0.23)
(/ (fma (/ a t_0) 9603.0 (fma a (/ 98.0 (* k k)) a)) t_0)
(if (<= m 1.8)
(/ a (fma k (+ k 10.0) 1.0))
(if (<= m 2.4e+87)
(* a (fma (* k k) (fma k k -1.0) 1.0))
(/
a
(/
(- (* (fma k k 1.0) (fma k k 1.0)) (* (* k k) 100.0))
(* k k))))))))
double code(double a, double k, double m) {
double t_0 = k * (k * (k * k));
double tmp;
if (m <= -0.23) {
tmp = fma((a / t_0), 9603.0, fma(a, (98.0 / (k * k)), a)) / t_0;
} else if (m <= 1.8) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else if (m <= 2.4e+87) {
tmp = a * fma((k * k), fma(k, k, -1.0), 1.0);
} else {
tmp = a / (((fma(k, k, 1.0) * fma(k, k, 1.0)) - ((k * k) * 100.0)) / (k * k));
}
return tmp;
}
function code(a, k, m) t_0 = Float64(k * Float64(k * Float64(k * k))) tmp = 0.0 if (m <= -0.23) tmp = Float64(fma(Float64(a / t_0), 9603.0, fma(a, Float64(98.0 / Float64(k * k)), a)) / t_0); elseif (m <= 1.8) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); elseif (m <= 2.4e+87) tmp = Float64(a * fma(Float64(k * k), fma(k, k, -1.0), 1.0)); else tmp = Float64(a / Float64(Float64(Float64(fma(k, k, 1.0) * fma(k, k, 1.0)) - Float64(Float64(k * k) * 100.0)) / Float64(k * k))); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = N[(k * N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[m, -0.23], N[(N[(N[(a / t$95$0), $MachinePrecision] * 9603.0 + N[(a * N[(98.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision], If[LessEqual[m, 1.8], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.4e+87], N[(a * N[(N[(k * k), $MachinePrecision] * N[(k * k + -1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a / N[(N[(N[(N[(k * k + 1.0), $MachinePrecision] * N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision] - N[(N[(k * k), $MachinePrecision] * 100.0), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := k \cdot \left(k \cdot \left(k \cdot k\right)\right)\\
\mathbf{if}\;m \leq -0.23:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{a}{t\_0}, 9603, \mathsf{fma}\left(a, \frac{98}{k \cdot k}, a\right)\right)}{t\_0}\\
\mathbf{elif}\;m \leq 1.8:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{elif}\;m \leq 2.4 \cdot 10^{+87}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k \cdot k, \mathsf{fma}\left(k, k, -1\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{a}{\frac{\mathsf{fma}\left(k, k, 1\right) \cdot \mathsf{fma}\left(k, k, 1\right) - \left(k \cdot k\right) \cdot 100}{k \cdot k}}\\
\end{array}
\end{array}
if m < -0.23000000000000001Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6434.3
Simplified34.3%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6420.8
Applied egg-rr20.8%
Taylor expanded in k around 0
Simplified22.1%
Taylor expanded in k around inf
/-lowering-/.f64N/A
Simplified85.3%
if -0.23000000000000001 < m < 1.80000000000000004Initial program 89.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6488.3
Simplified88.3%
if 1.80000000000000004 < m < 2.39999999999999981e87Initial program 60.9%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.7
Simplified2.7%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f642.7
Applied egg-rr2.7%
Taylor expanded in k around inf
Simplified2.7%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
sub-negN/A
unpow2N/A
metadata-evalN/A
accelerator-lowering-fma.f6449.8
Simplified49.8%
if 2.39999999999999981e87 < m Initial program 81.4%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.0
Simplified3.0%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f642.6
Applied egg-rr2.6%
Taylor expanded in k around inf
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
mul-1-negN/A
neg-lowering-neg.f6440.0
Simplified40.0%
Final simplification70.8%
(FPCore (a k m)
:precision binary64
(if (<= m -0.028)
(/ (fma a (/ 98.0 (* k k)) a) (* k (* k (* k k))))
(if (<= m 2.1)
(/ a (fma k (+ k 10.0) 1.0))
(if (<= m 9e+87)
(* a (fma (* k k) (fma k k -1.0) 1.0))
(/
a
(/ (- (* (fma k k 1.0) (fma k k 1.0)) (* (* k k) 100.0)) (* k k)))))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.028) {
tmp = fma(a, (98.0 / (k * k)), a) / (k * (k * (k * k)));
} else if (m <= 2.1) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else if (m <= 9e+87) {
tmp = a * fma((k * k), fma(k, k, -1.0), 1.0);
} else {
tmp = a / (((fma(k, k, 1.0) * fma(k, k, 1.0)) - ((k * k) * 100.0)) / (k * k));
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.028) tmp = Float64(fma(a, Float64(98.0 / Float64(k * k)), a) / Float64(k * Float64(k * Float64(k * k)))); elseif (m <= 2.1) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); elseif (m <= 9e+87) tmp = Float64(a * fma(Float64(k * k), fma(k, k, -1.0), 1.0)); else tmp = Float64(a / Float64(Float64(Float64(fma(k, k, 1.0) * fma(k, k, 1.0)) - Float64(Float64(k * k) * 100.0)) / Float64(k * k))); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.028], N[(N[(a * N[(98.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision] / N[(k * N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.1], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 9e+87], N[(a * N[(N[(k * k), $MachinePrecision] * N[(k * k + -1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a / N[(N[(N[(N[(k * k + 1.0), $MachinePrecision] * N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision] - N[(N[(k * k), $MachinePrecision] * 100.0), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.028:\\
\;\;\;\;\frac{\mathsf{fma}\left(a, \frac{98}{k \cdot k}, a\right)}{k \cdot \left(k \cdot \left(k \cdot k\right)\right)}\\
\mathbf{elif}\;m \leq 2.1:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{elif}\;m \leq 9 \cdot 10^{+87}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k \cdot k, \mathsf{fma}\left(k, k, -1\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{a}{\frac{\mathsf{fma}\left(k, k, 1\right) \cdot \mathsf{fma}\left(k, k, 1\right) - \left(k \cdot k\right) \cdot 100}{k \cdot k}}\\
\end{array}
\end{array}
if m < -0.0280000000000000006Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6434.3
Simplified34.3%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6420.8
Applied egg-rr20.8%
Taylor expanded in k around 0
Simplified22.1%
Taylor expanded in k around inf
/-lowering-/.f64N/A
+-commutativeN/A
associate-*r/N/A
*-commutativeN/A
associate-/l*N/A
metadata-evalN/A
associate-*r/N/A
accelerator-lowering-fma.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.5
Simplified82.5%
if -0.0280000000000000006 < m < 2.10000000000000009Initial program 89.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6488.3
Simplified88.3%
if 2.10000000000000009 < m < 9.0000000000000005e87Initial program 60.9%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.7
Simplified2.7%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f642.7
Applied egg-rr2.7%
Taylor expanded in k around inf
Simplified2.7%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
sub-negN/A
unpow2N/A
metadata-evalN/A
accelerator-lowering-fma.f6449.8
Simplified49.8%
if 9.0000000000000005e87 < m Initial program 81.4%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.0
Simplified3.0%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f642.6
Applied egg-rr2.6%
Taylor expanded in k around inf
unpow2N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
mul-1-negN/A
neg-lowering-neg.f6440.0
Simplified40.0%
Final simplification70.0%
(FPCore (a k m)
:precision binary64
(if (<= m -0.22)
(/ (fma a (/ 98.0 (* k k)) a) (* k (* k (* k k))))
(if (<= m 2.3)
(/ a (fma k (+ k 10.0) 1.0))
(fma
(* k k)
(fma (* k k) (fma (* k k) (* a 940996.0) (* a 9603.0)) (* a 98.0))
a))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.22) {
tmp = fma(a, (98.0 / (k * k)), a) / (k * (k * (k * k)));
} else if (m <= 2.3) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = fma((k * k), fma((k * k), fma((k * k), (a * 940996.0), (a * 9603.0)), (a * 98.0)), a);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.22) tmp = Float64(fma(a, Float64(98.0 / Float64(k * k)), a) / Float64(k * Float64(k * Float64(k * k)))); elseif (m <= 2.3) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = fma(Float64(k * k), fma(Float64(k * k), fma(Float64(k * k), Float64(a * 940996.0), Float64(a * 9603.0)), Float64(a * 98.0)), a); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.22], N[(N[(a * N[(98.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision] / N[(k * N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.3], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(k * k), $MachinePrecision] * N[(N[(k * k), $MachinePrecision] * N[(N[(k * k), $MachinePrecision] * N[(a * 940996.0), $MachinePrecision] + N[(a * 9603.0), $MachinePrecision]), $MachinePrecision] + N[(a * 98.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.22:\\
\;\;\;\;\frac{\mathsf{fma}\left(a, \frac{98}{k \cdot k}, a\right)}{k \cdot \left(k \cdot \left(k \cdot k\right)\right)}\\
\mathbf{elif}\;m \leq 2.3:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k \cdot k, \mathsf{fma}\left(k \cdot k, \mathsf{fma}\left(k \cdot k, a \cdot 940996, a \cdot 9603\right), a \cdot 98\right), a\right)\\
\end{array}
\end{array}
if m < -0.220000000000000001Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6434.3
Simplified34.3%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6420.8
Applied egg-rr20.8%
Taylor expanded in k around 0
Simplified22.1%
Taylor expanded in k around inf
/-lowering-/.f64N/A
+-commutativeN/A
associate-*r/N/A
*-commutativeN/A
associate-/l*N/A
metadata-evalN/A
associate-*r/N/A
accelerator-lowering-fma.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.5
Simplified82.5%
if -0.220000000000000001 < m < 2.2999999999999998Initial program 89.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6488.3
Simplified88.3%
if 2.2999999999999998 < m Initial program 76.3%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.9
Simplified2.9%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f642.5
Applied egg-rr2.5%
Taylor expanded in k around 0
Simplified2.4%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified37.8%
Final simplification68.4%
(FPCore (a k m)
:precision binary64
(if (<= m -0.13)
(/ (fma a (/ 98.0 (* k k)) a) (* k (* k (* k k))))
(if (<= m 2.2)
(/ a (fma k (+ k 10.0) 1.0))
(* a (fma (* k k) (fma k k -1.0) 1.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.13) {
tmp = fma(a, (98.0 / (k * k)), a) / (k * (k * (k * k)));
} else if (m <= 2.2) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = a * fma((k * k), fma(k, k, -1.0), 1.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.13) tmp = Float64(fma(a, Float64(98.0 / Float64(k * k)), a) / Float64(k * Float64(k * Float64(k * k)))); elseif (m <= 2.2) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a * fma(Float64(k * k), fma(k, k, -1.0), 1.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.13], N[(N[(a * N[(98.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision] / N[(k * N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.2], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(N[(k * k), $MachinePrecision] * N[(k * k + -1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.13:\\
\;\;\;\;\frac{\mathsf{fma}\left(a, \frac{98}{k \cdot k}, a\right)}{k \cdot \left(k \cdot \left(k \cdot k\right)\right)}\\
\mathbf{elif}\;m \leq 2.2:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k \cdot k, \mathsf{fma}\left(k, k, -1\right), 1\right)\\
\end{array}
\end{array}
if m < -0.13Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6434.3
Simplified34.3%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6420.8
Applied egg-rr20.8%
Taylor expanded in k around 0
Simplified22.1%
Taylor expanded in k around inf
/-lowering-/.f64N/A
+-commutativeN/A
associate-*r/N/A
*-commutativeN/A
associate-/l*N/A
metadata-evalN/A
associate-*r/N/A
accelerator-lowering-fma.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.5
Simplified82.5%
if -0.13 < m < 2.2000000000000002Initial program 89.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6488.3
Simplified88.3%
if 2.2000000000000002 < m Initial program 76.3%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.9
Simplified2.9%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f642.9
Applied egg-rr2.9%
Taylor expanded in k around inf
Simplified2.9%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
sub-negN/A
unpow2N/A
metadata-evalN/A
accelerator-lowering-fma.f6435.8
Simplified35.8%
Final simplification67.6%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ a (* k k))))
(if (<= k -1.25e-203)
t_0
(if (<= k 1.15e-306)
(* a (* k -10.0))
(if (<= k 0.1) (fma a (* k -10.0) a) t_0)))))
double code(double a, double k, double m) {
double t_0 = a / (k * k);
double tmp;
if (k <= -1.25e-203) {
tmp = t_0;
} else if (k <= 1.15e-306) {
tmp = a * (k * -10.0);
} else if (k <= 0.1) {
tmp = fma(a, (k * -10.0), a);
} else {
tmp = t_0;
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a / Float64(k * k)) tmp = 0.0 if (k <= -1.25e-203) tmp = t_0; elseif (k <= 1.15e-306) tmp = Float64(a * Float64(k * -10.0)); elseif (k <= 0.1) tmp = fma(a, Float64(k * -10.0), a); 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, -1.25e-203], t$95$0, If[LessEqual[k, 1.15e-306], N[(a * N[(k * -10.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[k, 0.1], N[(a * N[(k * -10.0), $MachinePrecision] + a), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{k \cdot k}\\
\mathbf{if}\;k \leq -1.25 \cdot 10^{-203}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;k \leq 1.15 \cdot 10^{-306}:\\
\;\;\;\;a \cdot \left(k \cdot -10\right)\\
\mathbf{elif}\;k \leq 0.1:\\
\;\;\;\;\mathsf{fma}\left(a, k \cdot -10, a\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if k < -1.25e-203 or 0.10000000000000001 < k Initial program 80.7%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6442.6
Simplified42.6%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6445.8
Simplified45.8%
if -1.25e-203 < k < 1.14999999999999995e-306Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.9
Simplified3.9%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f643.9
Simplified3.9%
Taylor expanded in k around inf
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6446.1
Simplified46.1%
if 1.14999999999999995e-306 < k < 0.10000000000000001Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6449.5
Simplified49.5%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f6448.9
Simplified48.9%
(FPCore (a k m)
:precision binary64
(if (<= m -0.085)
(/ a (* k (* k (* k k))))
(if (<= m 2.2)
(/ a (fma k (+ k 10.0) 1.0))
(* a (fma (* k k) (fma k k -1.0) 1.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.085) {
tmp = a / (k * (k * (k * k)));
} else if (m <= 2.2) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = a * fma((k * k), fma(k, k, -1.0), 1.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.085) tmp = Float64(a / Float64(k * Float64(k * Float64(k * k)))); elseif (m <= 2.2) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a * fma(Float64(k * k), fma(k, k, -1.0), 1.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.085], N[(a / N[(k * N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.2], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(N[(k * k), $MachinePrecision] * N[(k * k + -1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.085:\\
\;\;\;\;\frac{a}{k \cdot \left(k \cdot \left(k \cdot k\right)\right)}\\
\mathbf{elif}\;m \leq 2.2:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k \cdot k, \mathsf{fma}\left(k, k, -1\right), 1\right)\\
\end{array}
\end{array}
if m < -0.0850000000000000061Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6434.3
Simplified34.3%
distribute-rgt-inN/A
associate-+l+N/A
flip-+N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-commutativeN/A
swap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6420.8
Applied egg-rr20.8%
Taylor expanded in k around 0
Simplified22.1%
Taylor expanded in k around inf
metadata-evalN/A
pow-sqrN/A
unpow2N/A
associate-*l*N/A
unpow2N/A
cube-multN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6481.1
Simplified81.1%
if -0.0850000000000000061 < m < 2.2000000000000002Initial program 89.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6488.3
Simplified88.3%
if 2.2000000000000002 < m Initial program 76.3%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.9
Simplified2.9%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f642.9
Applied egg-rr2.9%
Taylor expanded in k around inf
Simplified2.9%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
sub-negN/A
unpow2N/A
metadata-evalN/A
accelerator-lowering-fma.f6435.8
Simplified35.8%
Final simplification67.2%
(FPCore (a k m)
:precision binary64
(if (<= m -3.8e-6)
(* a (/ 1.0 (* k k)))
(if (<= m 1.8)
(/ a (fma k (+ k 10.0) 1.0))
(* a (fma (* k k) (fma k k -1.0) 1.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -3.8e-6) {
tmp = a * (1.0 / (k * k));
} else if (m <= 1.8) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = a * fma((k * k), fma(k, k, -1.0), 1.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -3.8e-6) tmp = Float64(a * Float64(1.0 / Float64(k * k))); elseif (m <= 1.8) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a * fma(Float64(k * k), fma(k, k, -1.0), 1.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -3.8e-6], N[(a * N[(1.0 / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 1.8], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(N[(k * k), $MachinePrecision] * N[(k * k + -1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -3.8 \cdot 10^{-6}:\\
\;\;\;\;a \cdot \frac{1}{k \cdot k}\\
\mathbf{elif}\;m \leq 1.8:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k \cdot k, \mathsf{fma}\left(k, k, -1\right), 1\right)\\
\end{array}
\end{array}
if m < -3.8e-6Initial program 100.0%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f64100.0
Simplified100.0%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
pow2N/A
pow-divN/A
pow-lowering-pow.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval99.8
Applied egg-rr99.8%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6459.4
Simplified59.4%
if -3.8e-6 < m < 1.80000000000000004Initial program 89.7%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6488.9
Simplified88.9%
if 1.80000000000000004 < m Initial program 76.3%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.9
Simplified2.9%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f642.9
Applied egg-rr2.9%
Taylor expanded in k around inf
Simplified2.9%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
sub-negN/A
unpow2N/A
metadata-evalN/A
accelerator-lowering-fma.f6435.8
Simplified35.8%
Final simplification61.3%
(FPCore (a k m)
:precision binary64
(if (<= m -3.8e-6)
(* a (/ 1.0 (* k k)))
(if (<= m 2.2)
(/ 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 <= -3.8e-6) {
tmp = a * (1.0 / (k * k));
} else if (m <= 2.2) {
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 <= -3.8e-6) tmp = Float64(a * Float64(1.0 / Float64(k * k))); elseif (m <= 2.2) 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, -3.8e-6], N[(a * N[(1.0 / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.2], 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 -3.8 \cdot 10^{-6}:\\
\;\;\;\;a \cdot \frac{1}{k \cdot k}\\
\mathbf{elif}\;m \leq 2.2:\\
\;\;\;\;\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 < -3.8e-6Initial program 100.0%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f64100.0
Simplified100.0%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
pow2N/A
pow-divN/A
pow-lowering-pow.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval99.8
Applied egg-rr99.8%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6459.4
Simplified59.4%
if -3.8e-6 < m < 2.2000000000000002Initial program 89.7%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6488.9
Simplified88.9%
if 2.2000000000000002 < m Initial program 76.3%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.9
Simplified2.9%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f642.9
Applied egg-rr2.9%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f6430.6
Simplified30.6%
Final simplification59.4%
(FPCore (a k m)
:precision binary64
(if (<= m -3.8e-6)
(/ a (* k k))
(if (<= m 1.95)
(/ 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 <= -3.8e-6) {
tmp = a / (k * k);
} else if (m <= 1.95) {
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 <= -3.8e-6) tmp = Float64(a / Float64(k * k)); elseif (m <= 1.95) 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, -3.8e-6], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 1.95], 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 -3.8 \cdot 10^{-6}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 1.95:\\
\;\;\;\;\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 < -3.8e-6Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6434.3
Simplified34.3%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6459.4
Simplified59.4%
if -3.8e-6 < m < 1.94999999999999996Initial program 89.7%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6488.9
Simplified88.9%
if 1.94999999999999996 < m Initial program 76.3%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.9
Simplified2.9%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f642.9
Applied egg-rr2.9%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f6430.6
Simplified30.6%
Final simplification59.4%
(FPCore (a k m) :precision binary64 (if (<= m -2550.0) (/ a (* k k)) (if (<= m 2.3) (/ a (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 <= -2550.0) {
tmp = a / (k * k);
} else if (m <= 2.3) {
tmp = a / 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 <= -2550.0) tmp = Float64(a / Float64(k * k)); elseif (m <= 2.3) tmp = Float64(a / 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, -2550.0], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.3], N[(a / N[(k * k + 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 -2550:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 2.3:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k, 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 < -2550Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6434.7
Simplified34.7%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6460.6
Simplified60.6%
if -2550 < m < 2.2999999999999998Initial program 89.9%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6487.4
Simplified87.4%
Taylor expanded in k around inf
Simplified83.4%
if 2.2999999999999998 < m Initial program 76.3%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.9
Simplified2.9%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f642.9
Applied egg-rr2.9%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f6430.6
Simplified30.6%
Final simplification58.0%
(FPCore (a k m) :precision binary64 (if (<= m 2.35e+18) a (* a (* k -10.0))))
double code(double a, double k, double m) {
double tmp;
if (m <= 2.35e+18) {
tmp = a;
} else {
tmp = a * (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 <= 2.35d+18) then
tmp = a
else
tmp = a * (k * (-10.0d0))
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (m <= 2.35e+18) {
tmp = a;
} else {
tmp = a * (k * -10.0);
}
return tmp;
}
def code(a, k, m): tmp = 0 if m <= 2.35e+18: tmp = a else: tmp = a * (k * -10.0) return tmp
function code(a, k, m) tmp = 0.0 if (m <= 2.35e+18) tmp = a; else tmp = Float64(a * Float64(k * -10.0)); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (m <= 2.35e+18) tmp = a; else tmp = a * (k * -10.0); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[m, 2.35e+18], a, N[(a * N[(k * -10.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq 2.35 \cdot 10^{+18}:\\
\;\;\;\;a\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(k \cdot -10\right)\\
\end{array}
\end{array}
if m < 2.35e18Initial program 93.7%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6464.4
Simplified64.4%
Taylor expanded in k around 0
Simplified25.1%
if 2.35e18 < m Initial program 77.2%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f642.9
Simplified2.9%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f645.0
Simplified5.0%
Taylor expanded in k around inf
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6418.9
Simplified18.9%
(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 87.8%
Taylor expanded in m around 0
/-lowering-/.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
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6442.3
Simplified42.3%
Taylor expanded in k around 0
Simplified17.3%
herbie shell --seed 2024199
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))