
(FPCore (a k m) :precision binary64 (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))
double code(double a, double k, double m) {
return (a * pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
code = (a * (k ** m)) / ((1.0d0 + (10.0d0 * k)) + (k * k))
end function
public static double code(double a, double k, double m) {
return (a * Math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
def code(a, k, m): return (a * math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k))
function code(a, k, m) return Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(10.0 * k)) + Float64(k * k))) end
function tmp = code(a, k, m) tmp = (a * (k ^ m)) / ((1.0 + (10.0 * k)) + (k * k)); end
code[a_, k_, m_] := N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(10.0 * k), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 17 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a k m) :precision binary64 (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))
double code(double a, double k, double m) {
return (a * pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
code = (a * (k ** m)) / ((1.0d0 + (10.0d0 * k)) + (k * k))
end function
public static double code(double a, double k, double m) {
return (a * Math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
def code(a, k, m): return (a * math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k))
function code(a, k, m) return Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(10.0 * k)) + Float64(k * k))) end
function tmp = code(a, k, m) tmp = (a * (k ^ m)) / ((1.0 + (10.0 * k)) + (k * k)); end
code[a_, k_, m_] := N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(10.0 * k), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\end{array}
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+217)
(/ 1.0 (fma k (* (/ (pow k (- m)) a_m) (+ k 10.0)) (/ 1.0 a_m)))
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 ((t_0 / ((1.0 + (k * 10.0)) + (k * k))) <= 1e+217) {
tmp = 1.0 / fma(k, ((pow(k, -m) / a_m) * (k + 10.0)), (1.0 / a_m));
} 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 (Float64(t_0 / Float64(Float64(1.0 + Float64(k * 10.0)) + Float64(k * k))) <= 1e+217) tmp = Float64(1.0 / fma(k, Float64(Float64((k ^ Float64(-m)) / a_m) * Float64(k + 10.0)), Float64(1.0 / a_m))); 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[N[(t$95$0 / N[(N[(1.0 + N[(k * 10.0), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 1e+217], N[(1.0 / N[(k * N[(N[(N[Power[k, (-m)], $MachinePrecision] / a$95$m), $MachinePrecision] * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + N[(1.0 / a$95$m), $MachinePrecision]), $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}\;\frac{t\_0}{\left(1 + k \cdot 10\right) + k \cdot k} \leq 10^{+217}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, \frac{{k}^{\left(-m\right)}}{a\_m} \cdot \left(k + 10\right), \frac{1}{a\_m}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\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.9999999999999996e216Initial program 93.8%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6493.7
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6493.7
Applied rewrites93.7%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6493.7
Applied rewrites93.7%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites85.4%
Taylor expanded in m around 0
Applied rewrites86.9%
if 9.9999999999999996e216 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) Initial program 50.0%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f6498.1
Applied rewrites98.1%
Final simplification89.2%
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 (pow k (- m)))) (* a_s (/ 1.0 (fma k (/ (* k t_0) a_m) (/ t_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 t_0 = pow(k, -m);
return a_s * (1.0 / fma(k, ((k * t_0) / a_m), (t_0 / a_m)));
}
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) t_0 = k ^ Float64(-m) return Float64(a_s * Float64(1.0 / fma(k, Float64(Float64(k * t_0) / a_m), Float64(t_0 / 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_] := Block[{t$95$0 = N[Power[k, (-m)], $MachinePrecision]}, N[(a$95$s * N[(1.0 / N[(k * N[(N[(k * t$95$0), $MachinePrecision] / a$95$m), $MachinePrecision] + N[(t$95$0 / a$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
\begin{array}{l}
t_0 := {k}^{\left(-m\right)}\\
a\_s \cdot \frac{1}{\mathsf{fma}\left(k, \frac{k \cdot t\_0}{a\_m}, \frac{t\_0}{a\_m}\right)}
\end{array}
\end{array}
Initial program 84.9%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6484.8
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6484.8
Applied rewrites84.8%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6484.9
Applied rewrites84.9%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites88.4%
Taylor expanded in k around inf
Applied rewrites99.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 -2.05e-19)
(* (pow k m) (/ a_m (fma k (+ k 10.0) 1.0)))
(if (<= m 2.1e-5)
(/ 1.0 (fma k (/ (+ k 10.0) a_m) (/ 1.0 a_m)))
(/ a_m (* k (* k (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 <= -2.05e-19) {
tmp = pow(k, m) * (a_m / fma(k, (k + 10.0), 1.0));
} else if (m <= 2.1e-5) {
tmp = 1.0 / fma(k, ((k + 10.0) / a_m), (1.0 / a_m));
} else {
tmp = a_m / (k * (k * 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 <= -2.05e-19) tmp = Float64((k ^ m) * Float64(a_m / fma(k, Float64(k + 10.0), 1.0))); elseif (m <= 2.1e-5) tmp = Float64(1.0 / fma(k, Float64(Float64(k + 10.0) / a_m), Float64(1.0 / a_m))); else tmp = Float64(a_m / Float64(k * Float64(k * (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[m, -2.05e-19], N[(N[Power[k, m], $MachinePrecision] * N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.1e-5], N[(1.0 / N[(k * N[(N[(k + 10.0), $MachinePrecision] / a$95$m), $MachinePrecision] + N[(1.0 / a$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a$95$m / N[(k * N[(k * N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]), $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.05 \cdot 10^{-19}:\\
\;\;\;\;{k}^{m} \cdot \frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{elif}\;m \leq 2.1 \cdot 10^{-5}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, \frac{k + 10}{a\_m}, \frac{1}{a\_m}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{a\_m}{k \cdot \left(k \cdot {k}^{\left(-m\right)}\right)}\\
\end{array}
\end{array}
if m < -2.04999999999999993e-19Initial program 100.0%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64100.0
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f64100.0
Applied rewrites100.0%
if -2.04999999999999993e-19 < m < 2.09999999999999988e-5Initial program 84.9%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6484.8
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6484.8
Applied rewrites84.8%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6484.8
Applied rewrites84.8%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites99.1%
Taylor expanded in m around 0
Applied rewrites97.9%
if 2.09999999999999988e-5 < m Initial program 74.0%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6474.0
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6474.0
Applied rewrites74.0%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6474.0
Applied rewrites74.0%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites73.0%
Taylor expanded in k around inf
unpow2N/A
associate-*l*N/A
exp-to-powN/A
log-recN/A
distribute-lft-neg-inN/A
*-commutativeN/A
mul-1-negN/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
mul-1-negN/A
*-commutativeN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
exp-to-powN/A
lower-pow.f64N/A
mul-1-negN/A
lower-neg.f64100.0
Applied rewrites100.0%
Final simplification99.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 -4e-7)
(/ (* a_m (pow k m)) (fma 10.0 k 1.0))
(if (<= m 2.1e-5)
(/ 1.0 (fma k (/ (+ k 10.0) a_m) (/ 1.0 a_m)))
(/ a_m (* k (* k (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 <= -4e-7) {
tmp = (a_m * pow(k, m)) / fma(10.0, k, 1.0);
} else if (m <= 2.1e-5) {
tmp = 1.0 / fma(k, ((k + 10.0) / a_m), (1.0 / a_m));
} else {
tmp = a_m / (k * (k * 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 <= -4e-7) tmp = Float64(Float64(a_m * (k ^ m)) / fma(10.0, k, 1.0)); elseif (m <= 2.1e-5) tmp = Float64(1.0 / fma(k, Float64(Float64(k + 10.0) / a_m), Float64(1.0 / a_m))); else tmp = Float64(a_m / Float64(k * Float64(k * (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[m, -4e-7], N[(N[(a$95$m * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(10.0 * k + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 2.1e-5], N[(1.0 / N[(k * N[(N[(k + 10.0), $MachinePrecision] / a$95$m), $MachinePrecision] + N[(1.0 / a$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a$95$m / N[(k * N[(k * N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]), $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 \cdot 10^{-7}:\\
\;\;\;\;\frac{a\_m \cdot {k}^{m}}{\mathsf{fma}\left(10, k, 1\right)}\\
\mathbf{elif}\;m \leq 2.1 \cdot 10^{-5}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, \frac{k + 10}{a\_m}, \frac{1}{a\_m}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{a\_m}{k \cdot \left(k \cdot {k}^{\left(-m\right)}\right)}\\
\end{array}
\end{array}
if m < -3.9999999999999998e-7Initial program 100.0%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64100.0
Applied rewrites100.0%
if -3.9999999999999998e-7 < m < 2.09999999999999988e-5Initial program 85.4%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6485.3
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6485.3
Applied rewrites85.3%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6485.3
Applied rewrites85.3%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites99.2%
Taylor expanded in m around 0
Applied rewrites98.0%
if 2.09999999999999988e-5 < m Initial program 74.0%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6474.0
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6474.0
Applied rewrites74.0%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6474.0
Applied rewrites74.0%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites73.0%
Taylor expanded in k around inf
unpow2N/A
associate-*l*N/A
exp-to-powN/A
log-recN/A
distribute-lft-neg-inN/A
*-commutativeN/A
mul-1-negN/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
mul-1-negN/A
*-commutativeN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
exp-to-powN/A
lower-pow.f64N/A
mul-1-negN/A
lower-neg.f64100.0
Applied rewrites100.0%
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 -4e-7)
(/ t_0 (fma 10.0 k 1.0))
(if (<= m 0.04) (/ 1.0 (fma k (/ (+ k 10.0) a_m) (/ 1.0 a_m))) 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 <= -4e-7) {
tmp = t_0 / fma(10.0, k, 1.0);
} else if (m <= 0.04) {
tmp = 1.0 / fma(k, ((k + 10.0) / a_m), (1.0 / a_m));
} 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 <= -4e-7) tmp = Float64(t_0 / fma(10.0, k, 1.0)); elseif (m <= 0.04) tmp = Float64(1.0 / fma(k, Float64(Float64(k + 10.0) / a_m), Float64(1.0 / a_m))); 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, -4e-7], N[(t$95$0 / N[(10.0 * k + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.04], N[(1.0 / N[(k * N[(N[(k + 10.0), $MachinePrecision] / a$95$m), $MachinePrecision] + N[(1.0 / a$95$m), $MachinePrecision]), $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 -4 \cdot 10^{-7}:\\
\;\;\;\;\frac{t\_0}{\mathsf{fma}\left(10, k, 1\right)}\\
\mathbf{elif}\;m \leq 0.04:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, \frac{k + 10}{a\_m}, \frac{1}{a\_m}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
\end{array}
if m < -3.9999999999999998e-7Initial program 100.0%
Taylor expanded in k around 0
+-commutativeN/A
lower-fma.f64100.0
Applied rewrites100.0%
if -3.9999999999999998e-7 < m < 0.0400000000000000008Initial program 85.7%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6485.6
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6485.6
Applied rewrites85.6%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6485.6
Applied rewrites85.6%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites99.2%
Taylor expanded in m around 0
Applied rewrites97.1%
if 0.0400000000000000008 < m Initial program 73.5%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f64100.0
Applied rewrites100.0%
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 -0.000115)
t_0
(if (<= m 0.04) (/ 1.0 (fma k (/ (+ k 10.0) a_m) (/ 1.0 a_m))) 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 <= -0.000115) {
tmp = t_0;
} else if (m <= 0.04) {
tmp = 1.0 / fma(k, ((k + 10.0) / a_m), (1.0 / a_m));
} 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 <= -0.000115) tmp = t_0; elseif (m <= 0.04) tmp = Float64(1.0 / fma(k, Float64(Float64(k + 10.0) / a_m), Float64(1.0 / a_m))); 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, -0.000115], t$95$0, If[LessEqual[m, 0.04], N[(1.0 / N[(k * N[(N[(k + 10.0), $MachinePrecision] / a$95$m), $MachinePrecision] + N[(1.0 / a$95$m), $MachinePrecision]), $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 -0.000115:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;m \leq 0.04:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, \frac{k + 10}{a\_m}, \frac{1}{a\_m}\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
\end{array}
if m < -1.15e-4 or 0.0400000000000000008 < m Initial program 84.4%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f6499.4
Applied rewrites99.4%
if -1.15e-4 < m < 0.0400000000000000008Initial program 85.7%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6485.6
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6485.6
Applied rewrites85.6%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6485.6
Applied rewrites85.6%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites99.2%
Taylor expanded in m around 0
Applied rewrites97.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 (<= m -1.1e+174)
(/
(+ a_m (/ (+ (/ (fma a_m (/ 10.0 k) (* a_m 99.0)) k) (* a_m -10.0)) k))
(* k k))
(if (<= m -0.31)
(/ (/ (* a_m -980.0) (* k (* k k))) (* k k))
(if (<= m 0.9)
(/ 1.0 (fma k (/ (+ k 10.0) a_m) (/ 1.0 a_m)))
(* k (* k (* a_m 99.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 <= -1.1e+174) {
tmp = (a_m + (((fma(a_m, (10.0 / k), (a_m * 99.0)) / k) + (a_m * -10.0)) / k)) / (k * k);
} else if (m <= -0.31) {
tmp = ((a_m * -980.0) / (k * (k * k))) / (k * k);
} else if (m <= 0.9) {
tmp = 1.0 / fma(k, ((k + 10.0) / a_m), (1.0 / a_m));
} else {
tmp = k * (k * (a_m * 99.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 <= -1.1e+174) tmp = Float64(Float64(a_m + Float64(Float64(Float64(fma(a_m, Float64(10.0 / k), Float64(a_m * 99.0)) / k) + Float64(a_m * -10.0)) / k)) / Float64(k * k)); elseif (m <= -0.31) tmp = Float64(Float64(Float64(a_m * -980.0) / Float64(k * Float64(k * k))) / Float64(k * k)); elseif (m <= 0.9) tmp = Float64(1.0 / fma(k, Float64(Float64(k + 10.0) / a_m), Float64(1.0 / a_m))); else tmp = Float64(k * Float64(k * Float64(a_m * 99.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_] := N[(a$95$s * If[LessEqual[m, -1.1e+174], N[(N[(a$95$m + N[(N[(N[(N[(a$95$m * N[(10.0 / k), $MachinePrecision] + N[(a$95$m * 99.0), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision] + N[(a$95$m * -10.0), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, -0.31], N[(N[(N[(a$95$m * -980.0), $MachinePrecision] / N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.9], N[(1.0 / N[(k * N[(N[(k + 10.0), $MachinePrecision] / a$95$m), $MachinePrecision] + N[(1.0 / a$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(k * N[(k * N[(a$95$m * 99.0), $MachinePrecision]), $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.1 \cdot 10^{+174}:\\
\;\;\;\;\frac{a\_m + \frac{\frac{\mathsf{fma}\left(a\_m, \frac{10}{k}, a\_m \cdot 99\right)}{k} + a\_m \cdot -10}{k}}{k \cdot k}\\
\mathbf{elif}\;m \leq -0.31:\\
\;\;\;\;\frac{\frac{a\_m \cdot -980}{k \cdot \left(k \cdot k\right)}}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.9:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, \frac{k + 10}{a\_m}, \frac{1}{a\_m}\right)}\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(k \cdot \left(a\_m \cdot 99\right)\right)\\
\end{array}
\end{array}
if m < -1.1000000000000001e174Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6442.9
Applied rewrites42.9%
Taylor expanded in k around -inf
Applied rewrites41.2%
Taylor expanded in k around inf
Applied rewrites73.8%
if -1.1000000000000001e174 < m < -0.309999999999999998Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6448.3
Applied rewrites48.3%
Taylor expanded in k around -inf
Applied rewrites55.2%
Taylor expanded in k around 0
Applied rewrites70.9%
if -0.309999999999999998 < m < 0.900000000000000022Initial program 85.7%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6485.6
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6485.6
Applied rewrites85.6%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6485.6
Applied rewrites85.6%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites99.2%
Taylor expanded in m around 0
Applied rewrites97.1%
if 0.900000000000000022 < m Initial program 73.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites33.5%
Taylor expanded in k around inf
Applied rewrites53.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.9e+173)
(/ (+ a_m (/ (fma (/ a_m k) 99.0 (* a_m -10.0)) k)) (* k k))
(if (<= m -0.31)
(/ (/ (* a_m -980.0) (* k (* k k))) (* k k))
(if (<= m 0.9)
(/ 1.0 (fma k (/ (+ k 10.0) a_m) (/ 1.0 a_m)))
(* k (* k (* a_m 99.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 <= -3.9e+173) {
tmp = (a_m + (fma((a_m / k), 99.0, (a_m * -10.0)) / k)) / (k * k);
} else if (m <= -0.31) {
tmp = ((a_m * -980.0) / (k * (k * k))) / (k * k);
} else if (m <= 0.9) {
tmp = 1.0 / fma(k, ((k + 10.0) / a_m), (1.0 / a_m));
} else {
tmp = k * (k * (a_m * 99.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 <= -3.9e+173) tmp = Float64(Float64(a_m + Float64(fma(Float64(a_m / k), 99.0, Float64(a_m * -10.0)) / k)) / Float64(k * k)); elseif (m <= -0.31) tmp = Float64(Float64(Float64(a_m * -980.0) / Float64(k * Float64(k * k))) / Float64(k * k)); elseif (m <= 0.9) tmp = Float64(1.0 / fma(k, Float64(Float64(k + 10.0) / a_m), Float64(1.0 / a_m))); else tmp = Float64(k * Float64(k * Float64(a_m * 99.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_] := N[(a$95$s * If[LessEqual[m, -3.9e+173], N[(N[(a$95$m + N[(N[(N[(a$95$m / k), $MachinePrecision] * 99.0 + N[(a$95$m * -10.0), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, -0.31], N[(N[(N[(a$95$m * -980.0), $MachinePrecision] / N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.9], N[(1.0 / N[(k * N[(N[(k + 10.0), $MachinePrecision] / a$95$m), $MachinePrecision] + N[(1.0 / a$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(k * N[(k * N[(a$95$m * 99.0), $MachinePrecision]), $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.9 \cdot 10^{+173}:\\
\;\;\;\;\frac{a\_m + \frac{\mathsf{fma}\left(\frac{a\_m}{k}, 99, a\_m \cdot -10\right)}{k}}{k \cdot k}\\
\mathbf{elif}\;m \leq -0.31:\\
\;\;\;\;\frac{\frac{a\_m \cdot -980}{k \cdot \left(k \cdot k\right)}}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.9:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, \frac{k + 10}{a\_m}, \frac{1}{a\_m}\right)}\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(k \cdot \left(a\_m \cdot 99\right)\right)\\
\end{array}
\end{array}
if m < -3.8999999999999998e173Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6442.9
Applied rewrites42.9%
Taylor expanded in k around inf
Applied rewrites67.4%
if -3.8999999999999998e173 < m < -0.309999999999999998Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6448.3
Applied rewrites48.3%
Taylor expanded in k around -inf
Applied rewrites55.2%
Taylor expanded in k around 0
Applied rewrites70.9%
if -0.309999999999999998 < m < 0.900000000000000022Initial program 85.7%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6485.6
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6485.6
Applied rewrites85.6%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6485.6
Applied rewrites85.6%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites99.2%
Taylor expanded in m around 0
Applied rewrites97.1%
if 0.900000000000000022 < m Initial program 73.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites33.5%
Taylor expanded in k around inf
Applied rewrites53.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.9e+173)
(/ a_m (* k k))
(if (<= m -0.31)
(/ (/ (* a_m -980.0) (* k (* k k))) (* k k))
(if (<= m 0.9)
(/ 1.0 (fma k (/ (+ k 10.0) a_m) (/ 1.0 a_m)))
(* k (* k (* a_m 99.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 <= -3.9e+173) {
tmp = a_m / (k * k);
} else if (m <= -0.31) {
tmp = ((a_m * -980.0) / (k * (k * k))) / (k * k);
} else if (m <= 0.9) {
tmp = 1.0 / fma(k, ((k + 10.0) / a_m), (1.0 / a_m));
} else {
tmp = k * (k * (a_m * 99.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 <= -3.9e+173) tmp = Float64(a_m / Float64(k * k)); elseif (m <= -0.31) tmp = Float64(Float64(Float64(a_m * -980.0) / Float64(k * Float64(k * k))) / Float64(k * k)); elseif (m <= 0.9) tmp = Float64(1.0 / fma(k, Float64(Float64(k + 10.0) / a_m), Float64(1.0 / a_m))); else tmp = Float64(k * Float64(k * Float64(a_m * 99.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_] := N[(a$95$s * If[LessEqual[m, -3.9e+173], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, -0.31], N[(N[(N[(a$95$m * -980.0), $MachinePrecision] / N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.9], N[(1.0 / N[(k * N[(N[(k + 10.0), $MachinePrecision] / a$95$m), $MachinePrecision] + N[(1.0 / a$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(k * N[(k * N[(a$95$m * 99.0), $MachinePrecision]), $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.9 \cdot 10^{+173}:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq -0.31:\\
\;\;\;\;\frac{\frac{a\_m \cdot -980}{k \cdot \left(k \cdot k\right)}}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.9:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, \frac{k + 10}{a\_m}, \frac{1}{a\_m}\right)}\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(k \cdot \left(a\_m \cdot 99\right)\right)\\
\end{array}
\end{array}
if m < -3.8999999999999998e173Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6442.9
Applied rewrites42.9%
Taylor expanded in k around inf
Applied rewrites67.0%
if -3.8999999999999998e173 < m < -0.309999999999999998Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6448.3
Applied rewrites48.3%
Taylor expanded in k around -inf
Applied rewrites55.2%
Taylor expanded in k around 0
Applied rewrites70.9%
if -0.309999999999999998 < m < 0.900000000000000022Initial program 85.7%
lift-/.f64N/A
clear-numN/A
lower-/.f64N/A
lower-/.f6485.6
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-fma.f64N/A
lower-+.f6485.6
Applied rewrites85.6%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/r*N/A
lower-/.f64N/A
div-invN/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f6485.6
Applied rewrites85.6%
Taylor expanded in k around 0
lower-fma.f64N/A
Applied rewrites99.2%
Taylor expanded in m around 0
Applied rewrites97.1%
if 0.900000000000000022 < m Initial program 73.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites33.5%
Taylor expanded in k around inf
Applied rewrites53.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.9e+173)
(/ a_m (* k k))
(if (<= m -4.1e+21)
(/ (/ (* a_m -980.0) (* k (* k k))) (* k k))
(if (<= m 0.9)
(/ a_m (fma k (+ k 10.0) 1.0))
(* k (* k (* a_m 99.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 <= -3.9e+173) {
tmp = a_m / (k * k);
} else if (m <= -4.1e+21) {
tmp = ((a_m * -980.0) / (k * (k * k))) / (k * k);
} else if (m <= 0.9) {
tmp = a_m / fma(k, (k + 10.0), 1.0);
} else {
tmp = k * (k * (a_m * 99.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 <= -3.9e+173) tmp = Float64(a_m / Float64(k * k)); elseif (m <= -4.1e+21) tmp = Float64(Float64(Float64(a_m * -980.0) / Float64(k * Float64(k * k))) / Float64(k * k)); elseif (m <= 0.9) tmp = Float64(a_m / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(k * Float64(k * Float64(a_m * 99.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_] := N[(a$95$s * If[LessEqual[m, -3.9e+173], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, -4.1e+21], N[(N[(N[(a$95$m * -980.0), $MachinePrecision] / N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.9], N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(k * N[(k * N[(a$95$m * 99.0), $MachinePrecision]), $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.9 \cdot 10^{+173}:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq -4.1 \cdot 10^{+21}:\\
\;\;\;\;\frac{\frac{a\_m \cdot -980}{k \cdot \left(k \cdot k\right)}}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.9:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(k \cdot \left(a\_m \cdot 99\right)\right)\\
\end{array}
\end{array}
if m < -3.8999999999999998e173Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6442.9
Applied rewrites42.9%
Taylor expanded in k around inf
Applied rewrites67.0%
if -3.8999999999999998e173 < m < -4.1e21Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6445.3
Applied rewrites45.3%
Taylor expanded in k around -inf
Applied rewrites52.7%
Taylor expanded in k around 0
Applied rewrites69.2%
if -4.1e21 < m < 0.900000000000000022Initial program 86.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6484.5
Applied rewrites84.5%
if 0.900000000000000022 < m Initial program 73.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites33.5%
Taylor expanded in k around inf
Applied rewrites53.7%
Final simplification68.4%
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+38)
(/ a_m (* k k))
(if (<= m 0.9) (/ a_m (fma k (+ k 10.0) 1.0)) (* k (* k (* a_m 99.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 <= -4.2e+38) {
tmp = a_m / (k * k);
} else if (m <= 0.9) {
tmp = a_m / fma(k, (k + 10.0), 1.0);
} else {
tmp = k * (k * (a_m * 99.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 <= -4.2e+38) tmp = Float64(a_m / Float64(k * k)); elseif (m <= 0.9) tmp = Float64(a_m / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(k * Float64(k * Float64(a_m * 99.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_] := N[(a$95$s * If[LessEqual[m, -4.2e+38], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.9], N[(a$95$m / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(k * N[(k * N[(a$95$m * 99.0), $MachinePrecision]), $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^{+38}:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.9:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(k \cdot \left(a\_m \cdot 99\right)\right)\\
\end{array}
\end{array}
if m < -4.2e38Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6443.7
Applied rewrites43.7%
Taylor expanded in k around inf
Applied rewrites60.4%
if -4.2e38 < m < 0.900000000000000022Initial program 86.6%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6483.1
Applied rewrites83.1%
if 0.900000000000000022 < m Initial program 73.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites33.5%
Taylor expanded in k around inf
Applied rewrites53.7%
Final simplification66.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 -7.2e-188)
(/ a_m (* k k))
(if (<= m 0.9) (/ a_m (fma k 10.0 1.0)) (* k (* k (* a_m 99.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 <= -7.2e-188) {
tmp = a_m / (k * k);
} else if (m <= 0.9) {
tmp = a_m / fma(k, 10.0, 1.0);
} else {
tmp = k * (k * (a_m * 99.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 <= -7.2e-188) tmp = Float64(a_m / Float64(k * k)); elseif (m <= 0.9) tmp = Float64(a_m / fma(k, 10.0, 1.0)); else tmp = Float64(k * Float64(k * Float64(a_m * 99.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_] := N[(a$95$s * If[LessEqual[m, -7.2e-188], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.9], N[(a$95$m / N[(k * 10.0 + 1.0), $MachinePrecision]), $MachinePrecision], N[(k * N[(k * N[(a$95$m * 99.0), $MachinePrecision]), $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 -7.2 \cdot 10^{-188}:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.9:\\
\;\;\;\;\frac{a\_m}{\mathsf{fma}\left(k, 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(k \cdot \left(a\_m \cdot 99\right)\right)\\
\end{array}
\end{array}
if m < -7.1999999999999994e-188Initial program 96.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6457.2
Applied rewrites57.2%
Taylor expanded in k around inf
Applied rewrites58.4%
if -7.1999999999999994e-188 < m < 0.900000000000000022Initial program 85.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6482.8
Applied rewrites82.8%
Taylor expanded in k around 0
Applied rewrites69.3%
if 0.900000000000000022 < m Initial program 73.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites33.5%
Taylor expanded in k around inf
Applied rewrites53.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 -2.1e-191)
(/ a_m (* k k))
(if (<= m 0.6) (* a_m 1.0) (* k (* k (* a_m 99.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 <= -2.1e-191) {
tmp = a_m / (k * k);
} else if (m <= 0.6) {
tmp = a_m * 1.0;
} else {
tmp = k * (k * (a_m * 99.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 <= (-2.1d-191)) then
tmp = a_m / (k * k)
else if (m <= 0.6d0) then
tmp = a_m * 1.0d0
else
tmp = k * (k * (a_m * 99.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 <= -2.1e-191) {
tmp = a_m / (k * k);
} else if (m <= 0.6) {
tmp = a_m * 1.0;
} else {
tmp = k * (k * (a_m * 99.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 <= -2.1e-191: tmp = a_m / (k * k) elif m <= 0.6: tmp = a_m * 1.0 else: tmp = k * (k * (a_m * 99.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 <= -2.1e-191) tmp = Float64(a_m / Float64(k * k)); elseif (m <= 0.6) tmp = Float64(a_m * 1.0); else tmp = Float64(k * Float64(k * Float64(a_m * 99.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 <= -2.1e-191) tmp = a_m / (k * k); elseif (m <= 0.6) tmp = a_m * 1.0; else tmp = k * (k * (a_m * 99.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, -2.1e-191], N[(a$95$m / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.6], N[(a$95$m * 1.0), $MachinePrecision], N[(k * N[(k * N[(a$95$m * 99.0), $MachinePrecision]), $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.1 \cdot 10^{-191}:\\
\;\;\;\;\frac{a\_m}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.6:\\
\;\;\;\;a\_m \cdot 1\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(k \cdot \left(a\_m \cdot 99\right)\right)\\
\end{array}
\end{array}
if m < -2.09999999999999985e-191Initial program 96.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6457.2
Applied rewrites57.2%
Taylor expanded in k around inf
Applied rewrites58.4%
if -2.09999999999999985e-191 < m < 0.599999999999999978Initial program 85.0%
lift-/.f64N/A
clear-numN/A
div-invN/A
associate-/r*N/A
lift-+.f64N/A
flip-+N/A
clear-numN/A
lower-/.f64N/A
Applied rewrites84.9%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f6452.9
Applied rewrites52.9%
Taylor expanded in m around 0
Applied rewrites52.0%
if 0.599999999999999978 < m Initial program 73.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites33.5%
Taylor expanded in k around inf
Applied rewrites53.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 -1e-16)
(/ a_m (* k 10.0))
(if (<= m 0.6) (* a_m 1.0) (* k (* k (* a_m 99.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 <= -1e-16) {
tmp = a_m / (k * 10.0);
} else if (m <= 0.6) {
tmp = a_m * 1.0;
} else {
tmp = k * (k * (a_m * 99.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 <= (-1d-16)) then
tmp = a_m / (k * 10.0d0)
else if (m <= 0.6d0) then
tmp = a_m * 1.0d0
else
tmp = k * (k * (a_m * 99.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 <= -1e-16) {
tmp = a_m / (k * 10.0);
} else if (m <= 0.6) {
tmp = a_m * 1.0;
} else {
tmp = k * (k * (a_m * 99.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 <= -1e-16: tmp = a_m / (k * 10.0) elif m <= 0.6: tmp = a_m * 1.0 else: tmp = k * (k * (a_m * 99.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 <= -1e-16) tmp = Float64(a_m / Float64(k * 10.0)); elseif (m <= 0.6) tmp = Float64(a_m * 1.0); else tmp = Float64(k * Float64(k * Float64(a_m * 99.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 <= -1e-16) tmp = a_m / (k * 10.0); elseif (m <= 0.6) tmp = a_m * 1.0; else tmp = k * (k * (a_m * 99.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, -1e-16], N[(a$95$m / N[(k * 10.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.6], N[(a$95$m * 1.0), $MachinePrecision], N[(k * N[(k * N[(a$95$m * 99.0), $MachinePrecision]), $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 \cdot 10^{-16}:\\
\;\;\;\;\frac{a\_m}{k \cdot 10}\\
\mathbf{elif}\;m \leq 0.6:\\
\;\;\;\;a\_m \cdot 1\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(k \cdot \left(a\_m \cdot 99\right)\right)\\
\end{array}
\end{array}
if m < -9.9999999999999998e-17Initial program 100.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6447.3
Applied rewrites47.3%
Taylor expanded in k around inf
Applied rewrites52.5%
Taylor expanded in k around 0
Applied rewrites22.7%
if -9.9999999999999998e-17 < m < 0.599999999999999978Initial program 85.4%
lift-/.f64N/A
clear-numN/A
div-invN/A
associate-/r*N/A
lift-+.f64N/A
flip-+N/A
clear-numN/A
lower-/.f64N/A
Applied rewrites85.3%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f6450.4
Applied rewrites50.4%
Taylor expanded in m around 0
Applied rewrites49.7%
if 0.599999999999999978 < m Initial program 73.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites33.5%
Taylor expanded in k around inf
Applied rewrites53.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 0.6) (* a_m 1.0) (* k (* k (* a_m 99.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.6) {
tmp = a_m * 1.0;
} else {
tmp = k * (k * (a_m * 99.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.6d0) then
tmp = a_m * 1.0d0
else
tmp = k * (k * (a_m * 99.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.6) {
tmp = a_m * 1.0;
} else {
tmp = k * (k * (a_m * 99.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.6: tmp = a_m * 1.0 else: tmp = k * (k * (a_m * 99.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.6) tmp = Float64(a_m * 1.0); else tmp = Float64(k * Float64(k * Float64(a_m * 99.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.6) tmp = a_m * 1.0; else tmp = k * (k * (a_m * 99.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.6], N[(a$95$m * 1.0), $MachinePrecision], N[(k * N[(k * N[(a$95$m * 99.0), $MachinePrecision]), $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.6:\\
\;\;\;\;a\_m \cdot 1\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(k \cdot \left(a\_m \cdot 99\right)\right)\\
\end{array}
\end{array}
if m < 0.599999999999999978Initial program 91.9%
lift-/.f64N/A
clear-numN/A
div-invN/A
associate-/r*N/A
lift-+.f64N/A
flip-+N/A
clear-numN/A
lower-/.f64N/A
Applied rewrites91.9%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f6470.9
Applied rewrites70.9%
Taylor expanded in m around 0
Applied rewrites29.1%
if 0.599999999999999978 < m Initial program 73.5%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites33.5%
Taylor expanded in k around inf
Applied rewrites53.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 6.4e+22) (* a_m 1.0) (* 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 <= 6.4e+22) {
tmp = a_m * 1.0;
} 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 <= 6.4d+22) then
tmp = a_m * 1.0d0
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 <= 6.4e+22) {
tmp = a_m * 1.0;
} 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 <= 6.4e+22: tmp = a_m * 1.0 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 <= 6.4e+22) tmp = Float64(a_m * 1.0); 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 <= 6.4e+22) tmp = a_m * 1.0; 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, 6.4e+22], N[(a$95$m * 1.0), $MachinePrecision], 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 6.4 \cdot 10^{+22}:\\
\;\;\;\;a\_m \cdot 1\\
\mathbf{else}:\\
\;\;\;\;a\_m \cdot \left(k \cdot -10\right)\\
\end{array}
\end{array}
if m < 6.4e22Initial program 91.1%
lift-/.f64N/A
clear-numN/A
div-invN/A
associate-/r*N/A
lift-+.f64N/A
flip-+N/A
clear-numN/A
lower-/.f64N/A
Applied rewrites91.0%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f6472.1
Applied rewrites72.1%
Taylor expanded in m around 0
Applied rewrites28.0%
if 6.4e22 < m Initial program 73.6%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f642.9
Applied rewrites2.9%
Taylor expanded in k around 0
Applied rewrites12.7%
Taylor expanded in k around inf
Applied rewrites26.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 (* a_m 1.0)))
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 * 1.0);
}
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 * 1.0d0)
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 * 1.0);
}
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 * 1.0)
a\_m = abs(a) a\_s = copysign(1.0, a) function code(a_s, a_m, k, m) return Float64(a_s * Float64(a_m * 1.0)) 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 * 1.0); 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 * N[(a$95$m * 1.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
a\_m = \left|a\right|
\\
a\_s = \mathsf{copysign}\left(1, a\right)
\\
a\_s \cdot \left(a\_m \cdot 1\right)
\end{array}
Initial program 84.9%
lift-/.f64N/A
clear-numN/A
div-invN/A
associate-/r*N/A
lift-+.f64N/A
flip-+N/A
clear-numN/A
lower-/.f64N/A
Applied rewrites84.8%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f6482.0
Applied rewrites82.0%
Taylor expanded in m around 0
Applied rewrites19.4%
herbie shell --seed 2024238
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))