
(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 13 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a k m) :precision binary64 (/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))
double code(double a, double k, double m) {
return (a * pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
code = (a * (k ** m)) / ((1.0d0 + (10.0d0 * k)) + (k * k))
end function
public static double code(double a, double k, double m) {
return (a * Math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k));
}
def code(a, k, m): return (a * math.pow(k, m)) / ((1.0 + (10.0 * k)) + (k * k))
function code(a, k, m) return Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(10.0 * k)) + Float64(k * k))) end
function tmp = code(a, k, m) tmp = (a * (k ^ m)) / ((1.0 + (10.0 * k)) + (k * k)); end
code[a_, k_, m_] := N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(10.0 * k), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}
\end{array}
(FPCore (a k m)
:precision binary64
(let* ((t_0 (* a (pow k m))))
(if (<= k 4e-101)
t_0
(/ 1.0 (fma k (+ (/ k t_0) (/ 10.0 t_0)) (/ 1.0 t_0))))))
double code(double a, double k, double m) {
double t_0 = a * pow(k, m);
double tmp;
if (k <= 4e-101) {
tmp = t_0;
} else {
tmp = 1.0 / fma(k, ((k / t_0) + (10.0 / t_0)), (1.0 / t_0));
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a * (k ^ m)) tmp = 0.0 if (k <= 4e-101) tmp = t_0; else tmp = Float64(1.0 / fma(k, Float64(Float64(k / t_0) + Float64(10.0 / t_0)), Float64(1.0 / t_0))); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[k, 4e-101], t$95$0, N[(1.0 / N[(k * N[(N[(k / t$95$0), $MachinePrecision] + N[(10.0 / t$95$0), $MachinePrecision]), $MachinePrecision] + N[(1.0 / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := a \cdot {k}^{m}\\
\mathbf{if}\;k \leq 4 \cdot 10^{-101}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(k, \frac{k}{t\_0} + \frac{10}{t\_0}, \frac{1}{t\_0}\right)}\\
\end{array}
\end{array}
if k < 4.00000000000000021e-101Initial program 96.4%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f64100.0
Simplified100.0%
if 4.00000000000000021e-101 < k Initial program 83.2%
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
associate-+l+N/A
+-commutativeN/A
distribute-rgt-outN/A
accelerator-lowering-fma.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6483.2
Applied egg-rr83.2%
Taylor expanded in k around 0
accelerator-lowering-fma.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6499.3
Simplified99.3%
(FPCore (a k m)
:precision binary64
(if (<= k 0.000395)
(* a (pow k m))
(/
1.0
(*
k
(*
k
(+
(/ (pow (/ 1.0 k) m) a)
(/ 10.0 (* (pow (/ 1.0 k) (- m)) (* k a)))))))))
double code(double a, double k, double m) {
double tmp;
if (k <= 0.000395) {
tmp = a * pow(k, m);
} else {
tmp = 1.0 / (k * (k * ((pow((1.0 / k), m) / a) + (10.0 / (pow((1.0 / k), -m) * (k * a))))));
}
return tmp;
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
real(8) :: tmp
if (k <= 0.000395d0) then
tmp = a * (k ** m)
else
tmp = 1.0d0 / (k * (k * ((((1.0d0 / k) ** m) / a) + (10.0d0 / (((1.0d0 / k) ** -m) * (k * a))))))
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (k <= 0.000395) {
tmp = a * Math.pow(k, m);
} else {
tmp = 1.0 / (k * (k * ((Math.pow((1.0 / k), m) / a) + (10.0 / (Math.pow((1.0 / k), -m) * (k * a))))));
}
return tmp;
}
def code(a, k, m): tmp = 0 if k <= 0.000395: tmp = a * math.pow(k, m) else: tmp = 1.0 / (k * (k * ((math.pow((1.0 / k), m) / a) + (10.0 / (math.pow((1.0 / k), -m) * (k * a)))))) return tmp
function code(a, k, m) tmp = 0.0 if (k <= 0.000395) tmp = Float64(a * (k ^ m)); else tmp = Float64(1.0 / Float64(k * Float64(k * Float64(Float64((Float64(1.0 / k) ^ m) / a) + Float64(10.0 / Float64((Float64(1.0 / k) ^ Float64(-m)) * Float64(k * a))))))); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (k <= 0.000395) tmp = a * (k ^ m); else tmp = 1.0 / (k * (k * ((((1.0 / k) ^ m) / a) + (10.0 / (((1.0 / k) ^ -m) * (k * a)))))); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[k, 0.000395], N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision], N[(1.0 / N[(k * N[(k * N[(N[(N[Power[N[(1.0 / k), $MachinePrecision], m], $MachinePrecision] / a), $MachinePrecision] + N[(10.0 / N[(N[Power[N[(1.0 / k), $MachinePrecision], (-m)], $MachinePrecision] * N[(k * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;k \leq 0.000395:\\
\;\;\;\;a \cdot {k}^{m}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{k \cdot \left(k \cdot \left(\frac{{\left(\frac{1}{k}\right)}^{m}}{a} + \frac{10}{{\left(\frac{1}{k}\right)}^{\left(-m\right)} \cdot \left(k \cdot a\right)}\right)\right)}\\
\end{array}
\end{array}
if k < 3.95000000000000006e-4Initial program 97.0%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f6499.6
Simplified99.6%
if 3.95000000000000006e-4 < k Initial program 77.5%
clear-numN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
associate-+l+N/A
+-commutativeN/A
distribute-rgt-outN/A
accelerator-lowering-fma.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f6477.5
Applied egg-rr77.5%
Taylor expanded in k around inf
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
Simplified95.3%
Final simplification98.1%
(FPCore (a k m) :precision binary64 (if (<= (/ (* a (pow k m)) (+ (+ 1.0 (* k 10.0)) (* k k))) INFINITY) (/ a (/ (fma k (+ k 10.0) 1.0) (pow k m))) (* a (* (* k k) 99.0))))
double code(double a, double k, double m) {
double tmp;
if (((a * pow(k, m)) / ((1.0 + (k * 10.0)) + (k * k))) <= ((double) INFINITY)) {
tmp = a / (fma(k, (k + 10.0), 1.0) / pow(k, m));
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (Float64(Float64(a * (k ^ m)) / Float64(Float64(1.0 + Float64(k * 10.0)) + Float64(k * k))) <= Inf) tmp = Float64(a / Float64(fma(k, Float64(k + 10.0), 1.0) / (k ^ m))); else tmp = Float64(a * Float64(Float64(k * k) * 99.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 + N[(k * 10.0), $MachinePrecision]), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], Infinity], N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision] / N[Power[k, m], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a * N[(N[(k * k), $MachinePrecision] * 99.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{a \cdot {k}^{m}}{\left(1 + k \cdot 10\right) + k \cdot k} \leq \infty:\\
\;\;\;\;\frac{a}{\frac{\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(\left(k \cdot k\right) \cdot 99\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))) < +inf.0Initial program 95.8%
associate-/l*N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
associate-+l+N/A
+-commutativeN/A
distribute-rgt-outN/A
accelerator-lowering-fma.f64N/A
+-lowering-+.f64N/A
pow-lowering-pow.f6495.8
Applied egg-rr95.8%
if +inf.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) Initial program 0.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f641.6
Simplified1.6%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified33.3%
Taylor expanded in k around 0
*-commutativeN/A
*-lowering-*.f6462.5
Simplified62.5%
Taylor expanded in k around inf
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64100.0
Simplified100.0%
Final simplification96.1%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (* a (pow k m))))
(if (<= m -1.26e-11)
t_0
(if (<= m 7.5e-9) (/ a (fma k (+ k 10.0) 1.0)) t_0))))
double code(double a, double k, double m) {
double t_0 = a * pow(k, m);
double tmp;
if (m <= -1.26e-11) {
tmp = t_0;
} else if (m <= 7.5e-9) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = t_0;
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a * (k ^ m)) tmp = 0.0 if (m <= -1.26e-11) tmp = t_0; elseif (m <= 7.5e-9) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = t_0; end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[m, -1.26e-11], t$95$0, If[LessEqual[m, 7.5e-9], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := a \cdot {k}^{m}\\
\mathbf{if}\;m \leq -1.26 \cdot 10^{-11}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;m \leq 7.5 \cdot 10^{-9}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if m < -1.26e-11 or 7.49999999999999933e-9 < m Initial program 91.2%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f64100.0
Simplified100.0%
if -1.26e-11 < m < 7.49999999999999933e-9Initial program 88.2%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6487.9
Simplified87.9%
Final simplification96.0%
(FPCore (a k m) :precision binary64 (if (<= m -0.48) (* a (/ (- (/ (+ 10.0 (/ -99.0 k)) (- k)) -1.0) (* k k))) (if (<= m 0.19) (/ a (fma k (+ k 10.0) 1.0)) (* a (* (* k k) 99.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.48) {
tmp = a * ((((10.0 + (-99.0 / k)) / -k) - -1.0) / (k * k));
} else if (m <= 0.19) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.48) tmp = Float64(a * Float64(Float64(Float64(Float64(10.0 + Float64(-99.0 / k)) / Float64(-k)) - -1.0) / Float64(k * k))); elseif (m <= 0.19) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a * Float64(Float64(k * k) * 99.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.48], N[(a * N[(N[(N[(N[(10.0 + N[(-99.0 / k), $MachinePrecision]), $MachinePrecision] / (-k)), $MachinePrecision] - -1.0), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.19], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(N[(k * k), $MachinePrecision] * 99.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.48:\\
\;\;\;\;a \cdot \frac{\frac{10 + \frac{-99}{k}}{-k} - -1}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.19:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(\left(k \cdot k\right) \cdot 99\right)\\
\end{array}
\end{array}
if m < -0.47999999999999998Initial 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-+.f6443.0
Simplified43.0%
Taylor expanded in k around inf
Simplified71.7%
Taylor expanded in a around -inf
mul-1-negN/A
associate-/l*N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
distribute-neg-frac2N/A
neg-mul-1N/A
/-lowering-/.f64N/A
Simplified76.9%
if -0.47999999999999998 < m < 0.19Initial program 88.2%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6487.9
Simplified87.9%
if 0.19 < m Initial program 81.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.0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified13.7%
Taylor expanded in k around 0
*-commutativeN/A
*-lowering-*.f6418.6
Simplified18.6%
Taylor expanded in k around inf
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6462.6
Simplified62.6%
Final simplification76.1%
(FPCore (a k m) :precision binary64 (if (<= m -0.27) (/ (* 99.0 (/ a (* k k))) (* k k)) (if (<= m 0.19) (/ a (fma k (+ k 10.0) 1.0)) (* a (* (* k k) 99.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.27) {
tmp = (99.0 * (a / (k * k))) / (k * k);
} else if (m <= 0.19) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.27) tmp = Float64(Float64(99.0 * Float64(a / Float64(k * k))) / Float64(k * k)); elseif (m <= 0.19) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a * Float64(Float64(k * k) * 99.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.27], N[(N[(99.0 * N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.19], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(N[(k * k), $MachinePrecision] * 99.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.27:\\
\;\;\;\;\frac{99 \cdot \frac{a}{k \cdot k}}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.19:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(\left(k \cdot k\right) \cdot 99\right)\\
\end{array}
\end{array}
if m < -0.27000000000000002Initial 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-+.f6443.0
Simplified43.0%
Taylor expanded in k around inf
Simplified71.7%
Taylor expanded in k around 0
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6476.9
Simplified76.9%
if -0.27000000000000002 < m < 0.19Initial program 88.2%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6487.9
Simplified87.9%
if 0.19 < m Initial program 81.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.0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified13.7%
Taylor expanded in k around 0
*-commutativeN/A
*-lowering-*.f6418.6
Simplified18.6%
Taylor expanded in k around inf
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6462.6
Simplified62.6%
Final simplification76.1%
(FPCore (a k m) :precision binary64 (if (<= m -0.45) (/ a (* k k)) (if (<= m 0.19) (/ a (fma k (+ k 10.0) 1.0)) (* a (* (* k k) 99.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.45) {
tmp = a / (k * k);
} else if (m <= 0.19) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.45) tmp = Float64(a / Float64(k * k)); elseif (m <= 0.19) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a * Float64(Float64(k * k) * 99.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.45], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.19], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(N[(k * k), $MachinePrecision] * 99.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.45:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.19:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(\left(k \cdot k\right) \cdot 99\right)\\
\end{array}
\end{array}
if m < -0.450000000000000011Initial 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-+.f6443.0
Simplified43.0%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6466.5
Simplified66.5%
if -0.450000000000000011 < m < 0.19Initial program 88.2%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6487.9
Simplified87.9%
if 0.19 < m Initial program 81.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.0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified13.7%
Taylor expanded in k around 0
*-commutativeN/A
*-lowering-*.f6418.6
Simplified18.6%
Taylor expanded in k around inf
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6462.6
Simplified62.6%
Final simplification72.4%
(FPCore (a k m) :precision binary64 (if (<= m -0.68) (/ a (* k k)) (if (<= m 0.19) (/ a (fma k k 1.0)) (* a (* (* k k) 99.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.68) {
tmp = a / (k * k);
} else if (m <= 0.19) {
tmp = a / fma(k, k, 1.0);
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.68) tmp = Float64(a / Float64(k * k)); elseif (m <= 0.19) tmp = Float64(a / fma(k, k, 1.0)); else tmp = Float64(a * Float64(Float64(k * k) * 99.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.68], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.19], N[(a / N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(N[(k * k), $MachinePrecision] * 99.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.68:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.19:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(\left(k \cdot k\right) \cdot 99\right)\\
\end{array}
\end{array}
if m < -0.680000000000000049Initial 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-+.f6443.0
Simplified43.0%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6466.5
Simplified66.5%
if -0.680000000000000049 < m < 0.19Initial program 88.2%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6487.9
Simplified87.9%
Taylor expanded in k around inf
Simplified85.4%
if 0.19 < m Initial program 81.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.0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified13.7%
Taylor expanded in k around 0
*-commutativeN/A
*-lowering-*.f6418.6
Simplified18.6%
Taylor expanded in k around inf
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6462.6
Simplified62.6%
Final simplification71.5%
(FPCore (a k m) :precision binary64 (if (<= m -1.8e-37) (/ a (* k k)) (if (<= m 0.19) (/ a (fma k 10.0 1.0)) (* a (* (* k k) 99.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -1.8e-37) {
tmp = a / (k * k);
} else if (m <= 0.19) {
tmp = a / fma(k, 10.0, 1.0);
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -1.8e-37) tmp = Float64(a / Float64(k * k)); elseif (m <= 0.19) tmp = Float64(a / fma(k, 10.0, 1.0)); else tmp = Float64(a * Float64(Float64(k * k) * 99.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -1.8e-37], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.19], N[(a / N[(k * 10.0 + 1.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(N[(k * k), $MachinePrecision] * 99.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -1.8 \cdot 10^{-37}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.19:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(\left(k \cdot k\right) \cdot 99\right)\\
\end{array}
\end{array}
if m < -1.80000000000000004e-37Initial 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-+.f6444.8
Simplified44.8%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6466.5
Simplified66.5%
if -1.80000000000000004e-37 < m < 0.19Initial program 87.8%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6487.5
Simplified87.5%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6463.5
Simplified63.5%
if 0.19 < m Initial program 81.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.0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified13.7%
Taylor expanded in k around 0
*-commutativeN/A
*-lowering-*.f6418.6
Simplified18.6%
Taylor expanded in k around inf
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6462.6
Simplified62.6%
Final simplification64.3%
(FPCore (a k m) :precision binary64 (if (<= m -6e-39) (/ a (* k k)) (if (<= m 0.165) a (* a (* (* k k) 99.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -6e-39) {
tmp = a / (k * k);
} else if (m <= 0.165) {
tmp = a;
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
real(8) :: tmp
if (m <= (-6d-39)) then
tmp = a / (k * k)
else if (m <= 0.165d0) then
tmp = a
else
tmp = a * ((k * k) * 99.0d0)
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (m <= -6e-39) {
tmp = a / (k * k);
} else if (m <= 0.165) {
tmp = a;
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
def code(a, k, m): tmp = 0 if m <= -6e-39: tmp = a / (k * k) elif m <= 0.165: tmp = a else: tmp = a * ((k * k) * 99.0) return tmp
function code(a, k, m) tmp = 0.0 if (m <= -6e-39) tmp = Float64(a / Float64(k * k)); elseif (m <= 0.165) tmp = a; else tmp = Float64(a * Float64(Float64(k * k) * 99.0)); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (m <= -6e-39) tmp = a / (k * k); elseif (m <= 0.165) tmp = a; else tmp = a * ((k * k) * 99.0); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[m, -6e-39], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.165], a, N[(a * N[(N[(k * k), $MachinePrecision] * 99.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -6 \cdot 10^{-39}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.165:\\
\;\;\;\;a\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(\left(k \cdot k\right) \cdot 99\right)\\
\end{array}
\end{array}
if m < -6.00000000000000055e-39Initial 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-+.f6444.8
Simplified44.8%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6466.5
Simplified66.5%
if -6.00000000000000055e-39 < m < 0.165000000000000008Initial program 87.8%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6487.5
Simplified87.5%
Taylor expanded in k around 0
Simplified52.6%
if 0.165000000000000008 < m Initial program 81.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.0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified13.7%
Taylor expanded in k around 0
*-commutativeN/A
*-lowering-*.f6418.6
Simplified18.6%
Taylor expanded in k around inf
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6462.6
Simplified62.6%
Final simplification60.8%
(FPCore (a k m) :precision binary64 (if (<= m 0.17) a (* a (* (* k k) 99.0))))
double code(double a, double k, double m) {
double tmp;
if (m <= 0.17) {
tmp = a;
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
real(8) :: tmp
if (m <= 0.17d0) then
tmp = a
else
tmp = a * ((k * k) * 99.0d0)
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (m <= 0.17) {
tmp = a;
} else {
tmp = a * ((k * k) * 99.0);
}
return tmp;
}
def code(a, k, m): tmp = 0 if m <= 0.17: tmp = a else: tmp = a * ((k * k) * 99.0) return tmp
function code(a, k, m) tmp = 0.0 if (m <= 0.17) tmp = a; else tmp = Float64(a * Float64(Float64(k * k) * 99.0)); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (m <= 0.17) tmp = a; else tmp = a * ((k * k) * 99.0); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[m, 0.17], a, N[(a * N[(N[(k * k), $MachinePrecision] * 99.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq 0.17:\\
\;\;\;\;a\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(\left(k \cdot k\right) \cdot 99\right)\\
\end{array}
\end{array}
if m < 0.170000000000000012Initial program 94.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-+.f6464.7
Simplified64.7%
Taylor expanded in k around 0
Simplified27.3%
if 0.170000000000000012 < m Initial program 81.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.0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified13.7%
Taylor expanded in k around 0
*-commutativeN/A
*-lowering-*.f6418.6
Simplified18.6%
Taylor expanded in k around inf
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6462.6
Simplified62.6%
Final simplification38.3%
(FPCore (a k m) :precision binary64 (if (<= m 0.185) a (* a (* k -10.0))))
double code(double a, double k, double m) {
double tmp;
if (m <= 0.185) {
tmp = a;
} else {
tmp = a * (k * -10.0);
}
return tmp;
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
real(8) :: tmp
if (m <= 0.185d0) then
tmp = a
else
tmp = a * (k * (-10.0d0))
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (m <= 0.185) {
tmp = a;
} else {
tmp = a * (k * -10.0);
}
return tmp;
}
def code(a, k, m): tmp = 0 if m <= 0.185: tmp = a else: tmp = a * (k * -10.0) return tmp
function code(a, k, m) tmp = 0.0 if (m <= 0.185) tmp = a; else tmp = Float64(a * Float64(k * -10.0)); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (m <= 0.185) tmp = a; else tmp = a * (k * -10.0); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[m, 0.185], a, N[(a * N[(k * -10.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq 0.185:\\
\;\;\;\;a\\
\mathbf{else}:\\
\;\;\;\;a \cdot \left(k \cdot -10\right)\\
\end{array}
\end{array}
if m < 0.185Initial program 94.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-+.f6464.7
Simplified64.7%
Taylor expanded in k around 0
Simplified27.3%
if 0.185 < m Initial program 81.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.0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f645.5
Simplified5.5%
Taylor expanded in k around inf
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f6416.1
Simplified16.1%
Final simplification23.8%
(FPCore (a k m) :precision binary64 a)
double code(double a, double k, double m) {
return a;
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
code = a
end function
public static double code(double a, double k, double m) {
return a;
}
def code(a, k, m): return a
function code(a, k, m) return a end
function tmp = code(a, k, m) tmp = a; end
code[a_, k_, m_] := a
\begin{array}{l}
\\
a
\end{array}
Initial program 90.2%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6445.4
Simplified45.4%
Taylor expanded in k around 0
Simplified19.9%
herbie shell --seed 2024205
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))