
(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 16 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}
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(let* ((t_0 (* a_m (pow k m))))
(*
a_s
(if (<= (/ t_0 (+ (+ 1.0 (* k 10.0)) (* k k))) 1e+181)
(/ t_0 (fma (+ k 10.0) k 1.0))
(/ a_m (pow k (- m)))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double t_0 = a_m * pow(k, m);
double tmp;
if ((t_0 / ((1.0 + (k * 10.0)) + (k * k))) <= 1e+181) {
tmp = t_0 / fma((k + 10.0), k, 1.0);
} else {
tmp = a_m / pow(k, -m);
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) t_0 = Float64(a_m * (k ^ m)) tmp = 0.0 if (Float64(t_0 / Float64(Float64(1.0 + Float64(k * 10.0)) + Float64(k * k))) <= 1e+181) tmp = Float64(t_0 / fma(Float64(k + 10.0), k, 1.0)); else tmp = Float64(a_m / (k ^ Float64(-m))); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := Block[{t$95$0 = N[(a$95$m * N[Power[k, m], $MachinePrecision]), $MachinePrecision]}, N[(a$95$s * If[LessEqual[N[(t$95$0 / N[(N[(1.0 + N[(k * 10.0), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 1e+181], N[(t$95$0 / N[(N[(k + 10.0), $MachinePrecision] * k + 1.0), $MachinePrecision]), $MachinePrecision], N[(a$95$m / N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
\begin{array}{l}
t_0 := a\_m \cdot {k}^{m}\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{t\_0}{\left(1 + k \cdot 10\right) + k \cdot k} \leq 10^{+181}:\\
\;\;\;\;\frac{t\_0}{\mathsf{fma}\left(k + 10, k, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{a\_m}{{k}^{\left(-m\right)}}\\
\end{array}
\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))) < 9.9999999999999992e180Initial program 97.6%
associate-+l+N/A
+-commutativeN/A
distribute-rgt-outN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
+-lowering-+.f6497.6
Applied egg-rr97.6%
if 9.9999999999999992e180 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) Initial program 70.2%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f6475.4
Simplified75.4%
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
div-invN/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
pow-flipN/A
pow-lowering-pow.f64N/A
neg-lowering-neg.f6475.4
Applied egg-rr75.4%
Taylor expanded in k around 0
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
exp-to-powN/A
pow-lowering-pow.f64N/A
mul-1-negN/A
neg-lowering-neg.f64100.0
Simplified100.0%
Final simplification98.1%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= (/ (* a_m (pow k m)) (+ (+ 1.0 (* k 10.0)) (* k k))) 1e+181)
(* a_m (/ (pow k m) (fma k (+ k 10.0) 1.0)))
(/ a_m (pow k (- m))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (((a_m * pow(k, m)) / ((1.0 + (k * 10.0)) + (k * k))) <= 1e+181) {
tmp = a_m * (pow(k, m) / fma(k, (k + 10.0), 1.0));
} else {
tmp = a_m / pow(k, -m);
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (Float64(Float64(a_m * (k ^ m)) / Float64(Float64(1.0 + Float64(k * 10.0)) + Float64(k * k))) <= 1e+181) tmp = Float64(a_m * Float64((k ^ m) / fma(k, Float64(k + 10.0), 1.0))); else tmp = Float64(a_m / (k ^ Float64(-m))); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[N[(N[(a$95$m * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(k * 10.0), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 1e+181], N[(a$95$m * N[(N[Power[k, m], $MachinePrecision] / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a$95$m / N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{a\_m \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k} \leq 10^{+181}:\\
\;\;\;\;a\_m \cdot \frac{{k}^{m}}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{a\_m}{{k}^{\left(-m\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))) < 9.9999999999999992e180Initial program 97.6%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
associate-+l+N/A
+-commutativeN/A
distribute-rgt-outN/A
accelerator-lowering-fma.f64N/A
+-lowering-+.f6497.6
Applied egg-rr97.6%
if 9.9999999999999992e180 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) Initial program 70.2%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f6475.4
Simplified75.4%
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
div-invN/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
pow-flipN/A
pow-lowering-pow.f64N/A
neg-lowering-neg.f6475.4
Applied egg-rr75.4%
Taylor expanded in k around 0
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
exp-to-powN/A
pow-lowering-pow.f64N/A
mul-1-negN/A
neg-lowering-neg.f64100.0
Simplified100.0%
Final simplification98.1%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= (/ (* a_m (pow k m)) (+ (+ 1.0 (* k 10.0)) (* k k))) 5e-310)
(- (* a_m (* k k)))
(fma a_m (* k -10.0) a_m))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (((a_m * pow(k, m)) / ((1.0 + (k * 10.0)) + (k * k))) <= 5e-310) {
tmp = -(a_m * (k * k));
} else {
tmp = fma(a_m, (k * -10.0), a_m);
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (Float64(Float64(a_m * (k ^ m)) / Float64(Float64(1.0 + Float64(k * 10.0)) + Float64(k * k))) <= 5e-310) tmp = Float64(-Float64(a_m * Float64(k * k))); else tmp = fma(a_m, Float64(k * -10.0), a_m); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[N[(N[(a$95$m * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(k * 10.0), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 5e-310], (-N[(a$95$m * N[(k * k), $MachinePrecision]), $MachinePrecision]), N[(a$95$m * N[(k * -10.0), $MachinePrecision] + a$95$m), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{a\_m \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k} \leq 5 \cdot 10^{-310}:\\
\;\;\;\;-a\_m \cdot \left(k \cdot k\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(a\_m, k \cdot -10, a\_m\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))) < 4.999999999999985e-310Initial program 97.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-+.f6455.0
Simplified55.0%
*-commutativeN/A
flip-+N/A
associate-/r/N/A
*-commutativeN/A
*-lowering-*.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr34.9%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6433.5
Simplified33.5%
Taylor expanded in k around 0
mul-1-negN/A
neg-lowering-neg.f6417.7
Simplified17.7%
if 4.999999999999985e-310 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) Initial program 79.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.8
Simplified34.8%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6433.5
Simplified33.5%
Final simplification22.7%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= m -3.6e-13)
(/ a_m (* (pow k (- m)) (fma k 10.0 1.0)))
(if (<= m 1.9e-8) (/ a_m (fma k (+ k 10.0) 1.0)) (* a_m (pow k m))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= -3.6e-13) {
tmp = a_m / (pow(k, -m) * fma(k, 10.0, 1.0));
} else if (m <= 1.9e-8) {
tmp = a_m / fma(k, (k + 10.0), 1.0);
} else {
tmp = a_m * pow(k, m);
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= -3.6e-13) tmp = Float64(a_m / Float64((k ^ Float64(-m)) * fma(k, 10.0, 1.0))); elseif (m <= 1.9e-8) tmp = Float64(a_m / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a_m * (k ^ m)); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, -3.6e-13], N[(a$95$m / N[(N[Power[k, (-m)], $MachinePrecision] * N[(k * 10.0 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 1.9e-8], N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a$95$m * N[Power[k, m], $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -3.6 \cdot 10^{-13}:\\
\;\;\;\;\frac{a\_m}{{k}^{\left(-m\right)} \cdot \mathsf{fma}\left(k, 10, 1\right)}\\
\mathbf{elif}\;m \leq 1.9 \cdot 10^{-8}:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a\_m \cdot {k}^{m}\\
\end{array}
\end{array}
if m < -3.5999999999999998e-13Initial program 100.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f6498.9
Simplified98.9%
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
div-invN/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
pow-flipN/A
pow-lowering-pow.f64N/A
neg-lowering-neg.f6498.9
Applied egg-rr98.9%
if -3.5999999999999998e-13 < m < 1.90000000000000014e-8Initial program 94.5%
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-+.f6494.1
Simplified94.1%
if 1.90000000000000014e-8 < m Initial program 79.5%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f64100.0
Simplified100.0%
Final simplification97.6%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(let* ((t_0 (* a_m (pow k m))))
(*
a_s
(if (<= m -6.8e-10)
(/ t_0 (fma 10.0 k 1.0))
(if (<= m 1.05e-8) (/ a_m (fma k (+ k 10.0) 1.0)) t_0)))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double t_0 = a_m * pow(k, m);
double tmp;
if (m <= -6.8e-10) {
tmp = t_0 / fma(10.0, k, 1.0);
} else if (m <= 1.05e-8) {
tmp = a_m / fma(k, (k + 10.0), 1.0);
} else {
tmp = t_0;
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) t_0 = Float64(a_m * (k ^ m)) tmp = 0.0 if (m <= -6.8e-10) tmp = Float64(t_0 / fma(10.0, k, 1.0)); elseif (m <= 1.05e-8) tmp = Float64(a_m / fma(k, Float64(k + 10.0), 1.0)); else tmp = t_0; end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := Block[{t$95$0 = N[(a$95$m * N[Power[k, m], $MachinePrecision]), $MachinePrecision]}, N[(a$95$s * If[LessEqual[m, -6.8e-10], N[(t$95$0 / N[(10.0 * k + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 1.05e-8], N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]), $MachinePrecision]]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
\begin{array}{l}
t_0 := a\_m \cdot {k}^{m}\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -6.8 \cdot 10^{-10}:\\
\;\;\;\;\frac{t\_0}{\mathsf{fma}\left(10, k, 1\right)}\\
\mathbf{elif}\;m \leq 1.05 \cdot 10^{-8}:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
\end{array}
if m < -6.8000000000000003e-10Initial program 100.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f6498.9
Simplified98.9%
if -6.8000000000000003e-10 < m < 1.04999999999999997e-8Initial program 94.5%
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-+.f6494.1
Simplified94.1%
if 1.04999999999999997e-8 < m Initial program 79.5%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f64100.0
Simplified100.0%
Final simplification97.6%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= m -1.6e-10)
(/ a_m (pow k (- m)))
(if (<= m 2.9e-8) (/ a_m (fma k (+ k 10.0) 1.0)) (* a_m (pow k m))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= -1.6e-10) {
tmp = a_m / pow(k, -m);
} else if (m <= 2.9e-8) {
tmp = a_m / fma(k, (k + 10.0), 1.0);
} else {
tmp = a_m * pow(k, m);
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= -1.6e-10) tmp = Float64(a_m / (k ^ Float64(-m))); elseif (m <= 2.9e-8) tmp = Float64(a_m / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a_m * (k ^ m)); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, -1.6e-10], N[(a$95$m / N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.9e-8], N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a$95$m * N[Power[k, m], $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -1.6 \cdot 10^{-10}:\\
\;\;\;\;\frac{a\_m}{{k}^{\left(-m\right)}}\\
\mathbf{elif}\;m \leq 2.9 \cdot 10^{-8}:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a\_m \cdot {k}^{m}\\
\end{array}
\end{array}
if m < -1.5999999999999999e-10Initial program 100.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f6498.9
Simplified98.9%
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
div-invN/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
pow-flipN/A
pow-lowering-pow.f64N/A
neg-lowering-neg.f6498.9
Applied egg-rr98.9%
Taylor expanded in k around 0
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
exp-to-powN/A
pow-lowering-pow.f64N/A
mul-1-negN/A
neg-lowering-neg.f6498.9
Simplified98.9%
if -1.5999999999999999e-10 < m < 2.9000000000000002e-8Initial program 94.5%
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-+.f6494.1
Simplified94.1%
if 2.9000000000000002e-8 < m Initial program 79.5%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f64100.0
Simplified100.0%
Final simplification97.6%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(let* ((t_0 (* a_m (pow k m))))
(*
a_s
(if (<= m -1.7e-9)
t_0
(if (<= m 2e-8) (/ a_m (fma k (+ k 10.0) 1.0)) t_0)))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double t_0 = a_m * pow(k, m);
double tmp;
if (m <= -1.7e-9) {
tmp = t_0;
} else if (m <= 2e-8) {
tmp = a_m / fma(k, (k + 10.0), 1.0);
} else {
tmp = t_0;
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) t_0 = Float64(a_m * (k ^ m)) tmp = 0.0 if (m <= -1.7e-9) tmp = t_0; elseif (m <= 2e-8) tmp = Float64(a_m / fma(k, Float64(k + 10.0), 1.0)); else tmp = t_0; end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := Block[{t$95$0 = N[(a$95$m * N[Power[k, m], $MachinePrecision]), $MachinePrecision]}, N[(a$95$s * If[LessEqual[m, -1.7e-9], t$95$0, If[LessEqual[m, 2e-8], N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]), $MachinePrecision]]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
\begin{array}{l}
t_0 := a\_m \cdot {k}^{m}\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -1.7 \cdot 10^{-9}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;m \leq 2 \cdot 10^{-8}:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
\end{array}
if m < -1.6999999999999999e-9 or 2e-8 < m Initial program 89.9%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f6499.4
Simplified99.4%
if -1.6999999999999999e-9 < m < 2e-8Initial program 94.5%
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-+.f6494.1
Simplified94.1%
Final simplification97.6%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= m -355.0)
(/ (* a_m 99.0) (* (* k k) (* k k)))
(if (<= m 0.0155)
(/ a_m (fma k (+ k 10.0) 1.0))
(* (* k k) (fma (* k k) (* a_m (fma -20.0 k -100.0)) (- a_m)))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= -355.0) {
tmp = (a_m * 99.0) / ((k * k) * (k * k));
} else if (m <= 0.0155) {
tmp = a_m / fma(k, (k + 10.0), 1.0);
} else {
tmp = (k * k) * fma((k * k), (a_m * fma(-20.0, k, -100.0)), -a_m);
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= -355.0) tmp = Float64(Float64(a_m * 99.0) / Float64(Float64(k * k) * Float64(k * k))); elseif (m <= 0.0155) tmp = Float64(a_m / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(Float64(k * k) * fma(Float64(k * k), Float64(a_m * fma(-20.0, k, -100.0)), Float64(-a_m))); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, -355.0], N[(N[(a$95$m * 99.0), $MachinePrecision] / N[(N[(k * k), $MachinePrecision] * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.0155], N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(k * k), $MachinePrecision] * N[(N[(k * k), $MachinePrecision] * N[(a$95$m * N[(-20.0 * k + -100.0), $MachinePrecision]), $MachinePrecision] + (-a$95$m)), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -355:\\
\;\;\;\;\frac{a\_m \cdot 99}{\left(k \cdot k\right) \cdot \left(k \cdot k\right)}\\
\mathbf{elif}\;m \leq 0.0155:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(k \cdot k\right) \cdot \mathsf{fma}\left(k \cdot k, a\_m \cdot \mathsf{fma}\left(-20, k, -100\right), -a\_m\right)\\
\end{array}
\end{array}
if m < -355Initial 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-+.f6445.7
Simplified45.7%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f6445.7
Applied egg-rr45.7%
Taylor expanded in k around inf
Simplified69.6%
Taylor expanded in k around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6479.0
Simplified79.0%
if -355 < m < 0.0155Initial program 94.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-+.f6491.5
Simplified91.5%
if 0.0155 < m Initial program 79.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-+.f643.4
Simplified3.4%
*-commutativeN/A
flip-+N/A
associate-/r/N/A
*-commutativeN/A
*-lowering-*.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr3.0%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6434.7
Simplified34.7%
Taylor expanded in k around 0
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
cancel-sign-sub-invN/A
*-commutativeN/A
associate-*r*N/A
metadata-evalN/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
mul-1-negN/A
neg-lowering-neg.f6452.5
Simplified52.5%
Final simplification75.0%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= m -355.0)
(/ (* a_m 99.0) (* (* k k) (* k k)))
(if (<= m 4.2e-8)
(/ a_m (fma k (+ k 10.0) 1.0))
(if (<= m 2.3e+61)
(* a_m (fma k (fma k 99.0 -10.0) 1.0))
(- (* a_m (* k k))))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= -355.0) {
tmp = (a_m * 99.0) / ((k * k) * (k * k));
} else if (m <= 4.2e-8) {
tmp = a_m / fma(k, (k + 10.0), 1.0);
} else if (m <= 2.3e+61) {
tmp = a_m * fma(k, fma(k, 99.0, -10.0), 1.0);
} else {
tmp = -(a_m * (k * k));
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= -355.0) tmp = Float64(Float64(a_m * 99.0) / Float64(Float64(k * k) * Float64(k * k))); elseif (m <= 4.2e-8) tmp = Float64(a_m / fma(k, Float64(k + 10.0), 1.0)); elseif (m <= 2.3e+61) tmp = Float64(a_m * fma(k, fma(k, 99.0, -10.0), 1.0)); else tmp = Float64(-Float64(a_m * Float64(k * k))); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, -355.0], N[(N[(a$95$m * 99.0), $MachinePrecision] / N[(N[(k * k), $MachinePrecision] * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 4.2e-8], N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.3e+61], N[(a$95$m * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], (-N[(a$95$m * N[(k * k), $MachinePrecision]), $MachinePrecision])]]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -355:\\
\;\;\;\;\frac{a\_m \cdot 99}{\left(k \cdot k\right) \cdot \left(k \cdot k\right)}\\
\mathbf{elif}\;m \leq 4.2 \cdot 10^{-8}:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{elif}\;m \leq 2.3 \cdot 10^{+61}:\\
\;\;\;\;a\_m \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;-a\_m \cdot \left(k \cdot k\right)\\
\end{array}
\end{array}
if m < -355Initial 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-+.f6445.7
Simplified45.7%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f6445.7
Applied egg-rr45.7%
Taylor expanded in k around inf
Simplified69.6%
Taylor expanded in k around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
metadata-evalN/A
pow-sqrN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6479.0
Simplified79.0%
if -355 < m < 4.19999999999999989e-8Initial program 94.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-+.f6492.1
Simplified92.1%
if 4.19999999999999989e-8 < m < 2.3e61Initial program 62.5%
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-+.f646.1
Simplified6.1%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f646.1
Applied egg-rr6.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.f6455.4
Simplified55.4%
if 2.3e61 < m Initial program 83.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-+.f643.3
Simplified3.3%
*-commutativeN/A
flip-+N/A
associate-/r/N/A
*-commutativeN/A
*-lowering-*.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr2.9%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6438.8
Simplified38.8%
Taylor expanded in k around 0
mul-1-negN/A
neg-lowering-neg.f6438.3
Simplified38.3%
Final simplification71.5%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= m -355.0)
(/ a_m (* k k))
(if (<= m 4.2e-8)
(/ a_m (fma k (+ k 10.0) 1.0))
(if (<= m 4.6e+61)
(* a_m (fma k (fma k 99.0 -10.0) 1.0))
(- (* a_m (* k k))))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= -355.0) {
tmp = a_m / (k * k);
} else if (m <= 4.2e-8) {
tmp = a_m / fma(k, (k + 10.0), 1.0);
} else if (m <= 4.6e+61) {
tmp = a_m * fma(k, fma(k, 99.0, -10.0), 1.0);
} else {
tmp = -(a_m * (k * k));
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= -355.0) tmp = Float64(a_m / Float64(k * k)); elseif (m <= 4.2e-8) tmp = Float64(a_m / fma(k, Float64(k + 10.0), 1.0)); elseif (m <= 4.6e+61) tmp = Float64(a_m * fma(k, fma(k, 99.0, -10.0), 1.0)); else tmp = Float64(-Float64(a_m * Float64(k * k))); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, -355.0], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 4.2e-8], N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 4.6e+61], N[(a$95$m * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], (-N[(a$95$m * N[(k * k), $MachinePrecision]), $MachinePrecision])]]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -355:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq 4.2 \cdot 10^{-8}:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{elif}\;m \leq 4.6 \cdot 10^{+61}:\\
\;\;\;\;a\_m \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;-a\_m \cdot \left(k \cdot k\right)\\
\end{array}
\end{array}
if m < -355Initial 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-+.f6445.7
Simplified45.7%
Taylor expanded in k around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6463.7
Simplified63.7%
if -355 < m < 4.19999999999999989e-8Initial program 94.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-+.f6492.1
Simplified92.1%
if 4.19999999999999989e-8 < m < 4.5999999999999999e61Initial program 62.5%
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-+.f646.1
Simplified6.1%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f646.1
Applied egg-rr6.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.f6455.4
Simplified55.4%
if 4.5999999999999999e61 < m Initial program 83.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-+.f643.3
Simplified3.3%
*-commutativeN/A
flip-+N/A
associate-/r/N/A
*-commutativeN/A
*-lowering-*.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr2.9%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6438.8
Simplified38.8%
Taylor expanded in k around 0
mul-1-negN/A
neg-lowering-neg.f6438.3
Simplified38.3%
Final simplification66.6%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= m -355.0)
(/ a_m (* k k))
(if (<= m 4.2e-8)
(/ a_m (fma k k 1.0))
(if (<= m 1.18e+61)
(* a_m (fma k (fma k 99.0 -10.0) 1.0))
(- (* a_m (* k k))))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= -355.0) {
tmp = a_m / (k * k);
} else if (m <= 4.2e-8) {
tmp = a_m / fma(k, k, 1.0);
} else if (m <= 1.18e+61) {
tmp = a_m * fma(k, fma(k, 99.0, -10.0), 1.0);
} else {
tmp = -(a_m * (k * k));
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= -355.0) tmp = Float64(a_m / Float64(k * k)); elseif (m <= 4.2e-8) tmp = Float64(a_m / fma(k, k, 1.0)); elseif (m <= 1.18e+61) tmp = Float64(a_m * fma(k, fma(k, 99.0, -10.0), 1.0)); else tmp = Float64(-Float64(a_m * Float64(k * k))); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, -355.0], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 4.2e-8], N[(a$95$m / N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 1.18e+61], N[(a$95$m * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], (-N[(a$95$m * N[(k * k), $MachinePrecision]), $MachinePrecision])]]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -355:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq 4.2 \cdot 10^{-8}:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k, 1\right)}\\
\mathbf{elif}\;m \leq 1.18 \cdot 10^{+61}:\\
\;\;\;\;a\_m \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;-a\_m \cdot \left(k \cdot k\right)\\
\end{array}
\end{array}
if m < -355Initial 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-+.f6445.7
Simplified45.7%
Taylor expanded in k around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6463.7
Simplified63.7%
if -355 < m < 4.19999999999999989e-8Initial program 94.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-+.f6492.1
Simplified92.1%
Taylor expanded in k around inf
Simplified88.4%
if 4.19999999999999989e-8 < m < 1.18000000000000004e61Initial program 62.5%
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-+.f646.1
Simplified6.1%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f646.1
Applied egg-rr6.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.f6455.4
Simplified55.4%
if 1.18000000000000004e61 < m Initial program 83.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-+.f643.3
Simplified3.3%
*-commutativeN/A
flip-+N/A
associate-/r/N/A
*-commutativeN/A
*-lowering-*.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr2.9%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6438.8
Simplified38.8%
Taylor expanded in k around 0
mul-1-negN/A
neg-lowering-neg.f6438.3
Simplified38.3%
Final simplification65.3%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= m -4.2e-50)
(/ a_m (* k k))
(if (<= m 4.2e-8)
(/ a_m (fma k 10.0 1.0))
(if (<= m 1.02e+61)
(* a_m (fma k (fma k 99.0 -10.0) 1.0))
(- (* a_m (* k k))))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= -4.2e-50) {
tmp = a_m / (k * k);
} else if (m <= 4.2e-8) {
tmp = a_m / fma(k, 10.0, 1.0);
} else if (m <= 1.02e+61) {
tmp = a_m * fma(k, fma(k, 99.0, -10.0), 1.0);
} else {
tmp = -(a_m * (k * k));
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= -4.2e-50) tmp = Float64(a_m / Float64(k * k)); elseif (m <= 4.2e-8) tmp = Float64(a_m / fma(k, 10.0, 1.0)); elseif (m <= 1.02e+61) tmp = Float64(a_m * fma(k, fma(k, 99.0, -10.0), 1.0)); else tmp = Float64(-Float64(a_m * Float64(k * k))); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, -4.2e-50], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 4.2e-8], N[(a$95$m / N[(k * 10.0 + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 1.02e+61], N[(a$95$m * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], (-N[(a$95$m * N[(k * k), $MachinePrecision]), $MachinePrecision])]]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -4.2 \cdot 10^{-50}:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq 4.2 \cdot 10^{-8}:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, 10, 1\right)}\\
\mathbf{elif}\;m \leq 1.02 \cdot 10^{+61}:\\
\;\;\;\;a\_m \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;-a\_m \cdot \left(k \cdot k\right)\\
\end{array}
\end{array}
if m < -4.2000000000000002e-50Initial 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-+.f6450.5
Simplified50.5%
Taylor expanded in k around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6462.4
Simplified62.4%
if -4.2000000000000002e-50 < m < 4.19999999999999989e-8Initial program 94.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-+.f6493.5
Simplified93.5%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6468.6
Simplified68.6%
if 4.19999999999999989e-8 < m < 1.01999999999999999e61Initial program 62.5%
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-+.f646.1
Simplified6.1%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f646.1
Applied egg-rr6.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.f6455.4
Simplified55.4%
if 1.01999999999999999e61 < m Initial program 83.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-+.f643.3
Simplified3.3%
*-commutativeN/A
flip-+N/A
associate-/r/N/A
*-commutativeN/A
*-lowering-*.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr2.9%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6438.8
Simplified38.8%
Taylor expanded in k around 0
mul-1-negN/A
neg-lowering-neg.f6438.3
Simplified38.3%
Final simplification57.6%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= m -2.2e-57)
(/ a_m (* k k))
(if (<= m 3.5e+61)
(* a_m (fma k (fma k 99.0 -10.0) 1.0))
(- (* a_m (* k k)))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= -2.2e-57) {
tmp = a_m / (k * k);
} else if (m <= 3.5e+61) {
tmp = a_m * fma(k, fma(k, 99.0, -10.0), 1.0);
} else {
tmp = -(a_m * (k * k));
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= -2.2e-57) tmp = Float64(a_m / Float64(k * k)); elseif (m <= 3.5e+61) tmp = Float64(a_m * fma(k, fma(k, 99.0, -10.0), 1.0)); else tmp = Float64(-Float64(a_m * Float64(k * k))); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, -2.2e-57], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 3.5e+61], N[(a$95$m * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], (-N[(a$95$m * N[(k * k), $MachinePrecision]), $MachinePrecision])]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -2.2 \cdot 10^{-57}:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq 3.5 \cdot 10^{+61}:\\
\;\;\;\;a\_m \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;-a\_m \cdot \left(k \cdot k\right)\\
\end{array}
\end{array}
if m < -2.19999999999999999e-57Initial 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-+.f6451.5
Simplified51.5%
Taylor expanded in k around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6462.2
Simplified62.2%
if -2.19999999999999999e-57 < m < 3.50000000000000018e61Initial program 88.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-+.f6478.3
Simplified78.3%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f6478.3
Applied egg-rr78.3%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f6457.4
Simplified57.4%
if 3.50000000000000018e61 < m Initial program 83.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-+.f643.3
Simplified3.3%
*-commutativeN/A
flip-+N/A
associate-/r/N/A
*-commutativeN/A
*-lowering-*.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr2.9%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6438.8
Simplified38.8%
Taylor expanded in k around 0
mul-1-negN/A
neg-lowering-neg.f6438.3
Simplified38.3%
Final simplification54.2%
a\_m = (fabs.f64 a)
a\_s = (copysign.f64 #s(literal 1 binary64) a)
(FPCore (a_s a_m k m)
:precision binary64
(*
a_s
(if (<= m -6.9e-62)
(/ a_m (* k k))
(if (<= m 2e+22) (fma a_m (* k -10.0) a_m) (- (* a_m (* k k)))))))a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= -6.9e-62) {
tmp = a_m / (k * k);
} else if (m <= 2e+22) {
tmp = fma(a_m, (k * -10.0), a_m);
} else {
tmp = -(a_m * (k * k));
}
return a_s * tmp;
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= -6.9e-62) tmp = Float64(a_m / Float64(k * k)); elseif (m <= 2e+22) tmp = fma(a_m, Float64(k * -10.0), a_m); else tmp = Float64(-Float64(a_m * Float64(k * k))); end return Float64(a_s * tmp) end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, -6.9e-62], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2e+22], N[(a$95$m * N[(k * -10.0), $MachinePrecision] + a$95$m), $MachinePrecision], (-N[(a$95$m * N[(k * k), $MachinePrecision]), $MachinePrecision])]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq -6.9 \cdot 10^{-62}:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq 2 \cdot 10^{+22}:\\
\;\;\;\;\mathsf{fma}\left(a\_m, k \cdot -10, a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;-a\_m \cdot \left(k \cdot k\right)\\
\end{array}
\end{array}
if m < -6.89999999999999958e-62Initial 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-+.f6451.5
Simplified51.5%
Taylor expanded in k around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6462.2
Simplified62.2%
if -6.89999999999999958e-62 < m < 2e22Initial program 92.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-+.f6486.4
Simplified86.4%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6454.3
Simplified54.3%
if 2e22 < m Initial program 80.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-+.f643.2
Simplified3.2%
*-commutativeN/A
flip-+N/A
associate-/r/N/A
*-commutativeN/A
*-lowering-*.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr2.8%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6436.9
Simplified36.9%
Taylor expanded in k around 0
mul-1-negN/A
neg-lowering-neg.f6436.4
Simplified36.4%
Final simplification51.9%
a\_m = (fabs.f64 a) a\_s = (copysign.f64 #s(literal 1 binary64) a) (FPCore (a_s a_m k m) :precision binary64 (* a_s (if (<= m 0.0155) a_m (* a_m (* k -10.0)))))
a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= 0.0155) {
tmp = a_m;
} else {
tmp = a_m * (k * -10.0);
}
return a_s * tmp;
}
a\_m = abs(a)
a\_s = copysign(1.0d0, a)
real(8) function code(a_s, a_m, k, m)
real(8), intent (in) :: a_s
real(8), intent (in) :: a_m
real(8), intent (in) :: k
real(8), intent (in) :: m
real(8) :: tmp
if (m <= 0.0155d0) then
tmp = a_m
else
tmp = a_m * (k * (-10.0d0))
end if
code = a_s * tmp
end function
a\_m = Math.abs(a);
a\_s = Math.copySign(1.0, a);
public static double code(double a_s, double a_m, double k, double m) {
double tmp;
if (m <= 0.0155) {
tmp = a_m;
} else {
tmp = a_m * (k * -10.0);
}
return a_s * tmp;
}
a\_m = math.fabs(a) a\_s = math.copysign(1.0, a) def code(a_s, a_m, k, m): tmp = 0 if m <= 0.0155: tmp = a_m else: tmp = a_m * (k * -10.0) return a_s * tmp
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) tmp = 0.0 if (m <= 0.0155) tmp = a_m; else tmp = Float64(a_m * Float64(k * -10.0)); end return Float64(a_s * tmp) end
a\_m = abs(a); a\_s = sign(a) * abs(1.0); function tmp_2 = code(a_s, a_m, k, m) tmp = 0.0; if (m <= 0.0155) tmp = a_m; else tmp = a_m * (k * -10.0); end tmp_2 = a_s * tmp; end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * If[LessEqual[m, 0.0155], a$95$m, N[(a$95$m * N[(k * -10.0), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \begin{array}{l}
\mathbf{if}\;m \leq 0.0155:\\
\;\;\;\;a\_m\\
\mathbf{else}:\\
\;\;\;\;a\_m \cdot \left(k \cdot -10\right)\\
\end{array}
\end{array}
if m < 0.0155Initial program 97.3%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f6477.6
Simplified77.6%
Taylor expanded in m around 0
Simplified30.5%
if 0.0155 < m Initial program 79.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-+.f643.4
Simplified3.4%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f6411.6
Simplified11.6%
Taylor expanded in k around inf
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6423.1
Simplified23.1%
a\_m = (fabs.f64 a) a\_s = (copysign.f64 #s(literal 1 binary64) a) (FPCore (a_s a_m k m) :precision binary64 (* a_s a_m))
a\_m = fabs(a);
a\_s = copysign(1.0, a);
double code(double a_s, double a_m, double k, double m) {
return a_s * a_m;
}
a\_m = abs(a)
a\_s = copysign(1.0d0, a)
real(8) function code(a_s, a_m, k, m)
real(8), intent (in) :: a_s
real(8), intent (in) :: a_m
real(8), intent (in) :: k
real(8), intent (in) :: m
code = a_s * a_m
end function
a\_m = Math.abs(a);
a\_s = Math.copySign(1.0, a);
public static double code(double a_s, double a_m, double k, double m) {
return a_s * a_m;
}
a\_m = math.fabs(a) a\_s = math.copysign(1.0, a) def code(a_s, a_m, k, m): return a_s * a_m
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) return Float64(a_s * a_m) end
a\_m = abs(a); a\_s = sign(a) * abs(1.0); function tmp = code(a_s, a_m, k, m) tmp = a_s * a_m; end
a\_m = N[Abs[a], $MachinePrecision]
a\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[a]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[a$95$s_, a$95$m_, k_, m_] := N[(a$95$s * a$95$m), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot a\_m
\end{array}
Initial program 91.5%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f6484.7
Simplified84.7%
Taylor expanded in m around 0
Simplified22.1%
herbie shell --seed 2024204
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))