
(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 (if (<= (/ (* a (pow k m)) (+ (+ (* k 10.0) 1.0) (* k k))) INFINITY) (/ a (/ (fma k (+ k 10.0) 1.0) (pow k m))) (* a (fma k (fma k 99.0 -10.0) 1.0))))
double code(double a, double k, double m) {
double tmp;
if (((a * pow(k, m)) / (((k * 10.0) + 1.0) + (k * k))) <= ((double) INFINITY)) {
tmp = a / (fma(k, (k + 10.0), 1.0) / pow(k, m));
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (Float64(Float64(a * (k ^ m)) / Float64(Float64(Float64(k * 10.0) + 1.0) + Float64(k * k))) <= Inf) tmp = Float64(a / Float64(fma(k, Float64(k + 10.0), 1.0) / (k ^ m))); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(k * 10.0), $MachinePrecision] + 1.0), $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[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\frac{a \cdot {k}^{m}}{\left(k \cdot 10 + 1\right) + k \cdot k} \leq \infty:\\
\;\;\;\;\frac{a}{\frac{\mathsf{fma}\left(k, k + 10, 1\right)}{{k}^{m}}}\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < +inf.0Initial program 97.6%
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
lower-/.f64N/A
lower-/.f6497.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-+.f6497.6
Applied rewrites97.6%
if +inf.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) Initial program 0.0%
Taylor expanded in m around 0
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-+.f641.6
Applied rewrites1.6%
Applied rewrites1.6%
Taylor expanded in k around 0
Applied rewrites100.0%
Final simplification97.7%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ a (* k k)))
(t_1 (/ (* a (pow k m)) (+ (+ (* k 10.0) 1.0) (* k k)))))
(if (<= t_1 5e-320)
t_0
(if (<= t_1 2e+271)
(* a 1.0)
(if (<= t_1 INFINITY) t_0 (* a (fma k (fma k 99.0 -10.0) 1.0)))))))
double code(double a, double k, double m) {
double t_0 = a / (k * k);
double t_1 = (a * pow(k, m)) / (((k * 10.0) + 1.0) + (k * k));
double tmp;
if (t_1 <= 5e-320) {
tmp = t_0;
} else if (t_1 <= 2e+271) {
tmp = a * 1.0;
} else if (t_1 <= ((double) INFINITY)) {
tmp = t_0;
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(a / Float64(k * k)) t_1 = Float64(Float64(a * (k ^ m)) / Float64(Float64(Float64(k * 10.0) + 1.0) + Float64(k * k))) tmp = 0.0 if (t_1 <= 5e-320) tmp = t_0; elseif (t_1 <= 2e+271) tmp = Float64(a * 1.0); elseif (t_1 <= Inf) tmp = t_0; else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(k * 10.0), $MachinePrecision] + 1.0), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 5e-320], t$95$0, If[LessEqual[t$95$1, 2e+271], N[(a * 1.0), $MachinePrecision], If[LessEqual[t$95$1, Infinity], t$95$0, N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{k \cdot k}\\
t_1 := \frac{a \cdot {k}^{m}}{\left(k \cdot 10 + 1\right) + k \cdot k}\\
\mathbf{if}\;t\_1 \leq 5 \cdot 10^{-320}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+271}:\\
\;\;\;\;a \cdot 1\\
\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 4.99994e-320 or 1.99999999999999991e271 < (/.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 97.2%
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-+.f6440.5
Applied rewrites40.5%
Taylor expanded in k around inf
Applied rewrites44.8%
if 4.99994e-320 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.99999999999999991e271Initial program 99.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6497.3
Applied rewrites97.3%
Applied rewrites97.3%
Taylor expanded in k around 0
Applied rewrites73.4%
if +inf.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) Initial program 0.0%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f641.6
Applied rewrites1.6%
Applied rewrites1.6%
Taylor expanded in k around 0
Applied rewrites100.0%
Final simplification52.1%
(FPCore (a k m) :precision binary64 (if (<= m 0.001) (* a (/ (pow k m) (+ (* k (+ k 10.0)) 1.0))) (/ a (pow k (- m)))))
double code(double a, double k, double m) {
double tmp;
if (m <= 0.001) {
tmp = a * (pow(k, m) / ((k * (k + 10.0)) + 1.0));
} else {
tmp = a / pow(k, -m);
}
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.001d0) then
tmp = a * ((k ** m) / ((k * (k + 10.0d0)) + 1.0d0))
else
tmp = a / (k ** -m)
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (m <= 0.001) {
tmp = a * (Math.pow(k, m) / ((k * (k + 10.0)) + 1.0));
} else {
tmp = a / Math.pow(k, -m);
}
return tmp;
}
def code(a, k, m): tmp = 0 if m <= 0.001: tmp = a * (math.pow(k, m) / ((k * (k + 10.0)) + 1.0)) else: tmp = a / math.pow(k, -m) return tmp
function code(a, k, m) tmp = 0.0 if (m <= 0.001) tmp = Float64(a * Float64((k ^ m) / Float64(Float64(k * Float64(k + 10.0)) + 1.0))); else tmp = Float64(a / (k ^ Float64(-m))); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (m <= 0.001) tmp = a * ((k ^ m) / ((k * (k + 10.0)) + 1.0)); else tmp = a / (k ^ -m); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[m, 0.001], N[(a * N[(N[Power[k, m], $MachinePrecision] / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a / N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq 0.001:\\
\;\;\;\;a \cdot \frac{{k}^{m}}{k \cdot \left(k + 10\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\
\end{array}
\end{array}
if m < 1e-3Initial program 96.6%
lift-/.f64N/A
frac-2negN/A
lift-*.f64N/A
distribute-lft-neg-inN/A
associate-/l*N/A
lower-*.f64N/A
lower-neg.f64N/A
lower-/.f64N/A
lift-+.f64N/A
lift-+.f64N/A
associate-+l+N/A
distribute-neg-inN/A
metadata-evalN/A
unsub-negN/A
lower--.f64N/A
lift-*.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
lower-*.f64N/A
lower-+.f6496.5
Applied rewrites96.5%
if 1e-3 < m Initial program 79.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
lower-/.f64N/A
lower-/.f6479.5
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-+.f6479.5
Applied rewrites79.5%
Taylor expanded in k around 0
Applied rewrites100.0%
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f64100.0
Applied rewrites100.0%
Taylor expanded in k around 0
associate-*r*N/A
*-commutativeN/A
exp-to-powN/A
lower-pow.f64N/A
mul-1-negN/A
lower-neg.f64100.0
Applied rewrites100.0%
Final simplification97.7%
(FPCore (a k m) :precision binary64 (if (<= m 0.001) (* a (/ (pow k m) (fma k (+ k 10.0) 1.0))) (/ a (pow k (- m)))))
double code(double a, double k, double m) {
double tmp;
if (m <= 0.001) {
tmp = a * (pow(k, m) / fma(k, (k + 10.0), 1.0));
} else {
tmp = a / pow(k, -m);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= 0.001) tmp = Float64(a * Float64((k ^ m) / fma(k, Float64(k + 10.0), 1.0))); else tmp = Float64(a / (k ^ Float64(-m))); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, 0.001], N[(a * N[(N[Power[k, m], $MachinePrecision] / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(a / N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq 0.001:\\
\;\;\;\;a \cdot \frac{{k}^{m}}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\
\end{array}
\end{array}
if m < 1e-3Initial program 96.6%
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f6496.5
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-+.f6496.5
Applied rewrites96.5%
if 1e-3 < m Initial program 79.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
lower-/.f64N/A
lower-/.f6479.5
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-+.f6479.5
Applied rewrites79.5%
Taylor expanded in k around 0
Applied rewrites100.0%
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f64100.0
Applied rewrites100.0%
Taylor expanded in k around 0
associate-*r*N/A
*-commutativeN/A
exp-to-powN/A
lower-pow.f64N/A
mul-1-negN/A
lower-neg.f64100.0
Applied rewrites100.0%
Final simplification97.7%
(FPCore (a k m) :precision binary64 (if (<= m -5e-13) (* a (pow k m)) (if (<= m 1.68e-6) (/ a (fma k (+ k 10.0) 1.0)) (/ a (pow k (- m))))))
double code(double a, double k, double m) {
double tmp;
if (m <= -5e-13) {
tmp = a * pow(k, m);
} else if (m <= 1.68e-6) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = a / pow(k, -m);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -5e-13) tmp = Float64(a * (k ^ m)); elseif (m <= 1.68e-6) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(a / (k ^ Float64(-m))); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -5e-13], N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 1.68e-6], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(a / N[Power[k, (-m)], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -5 \cdot 10^{-13}:\\
\;\;\;\;a \cdot {k}^{m}\\
\mathbf{elif}\;m \leq 1.68 \cdot 10^{-6}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{a}{{k}^{\left(-m\right)}}\\
\end{array}
\end{array}
if m < -4.9999999999999999e-13Initial program 100.0%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f64100.0
Applied rewrites100.0%
if -4.9999999999999999e-13 < m < 1.68e-6Initial program 93.4%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6493.4
Applied rewrites93.4%
if 1.68e-6 < m Initial program 79.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
clear-numN/A
un-div-invN/A
lower-/.f64N/A
lower-/.f6479.5
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-+.f6479.5
Applied rewrites79.5%
Taylor expanded in k around 0
Applied rewrites100.0%
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
lift-pow.f64N/A
pow-flipN/A
lower-pow.f64N/A
lower-neg.f64100.0
Applied rewrites100.0%
Taylor expanded in k around 0
associate-*r*N/A
*-commutativeN/A
exp-to-powN/A
lower-pow.f64N/A
mul-1-negN/A
lower-neg.f64100.0
Applied rewrites100.0%
Final simplification97.7%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (* a (pow k m))))
(if (<= m -5e-13)
t_0
(if (<= m 1.68e-6) (/ 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 <= -5e-13) {
tmp = t_0;
} else if (m <= 1.68e-6) {
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 <= -5e-13) tmp = t_0; elseif (m <= 1.68e-6) 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, -5e-13], t$95$0, If[LessEqual[m, 1.68e-6], 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 -5 \cdot 10^{-13}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;m \leq 1.68 \cdot 10^{-6}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if m < -4.9999999999999999e-13 or 1.68e-6 < m Initial program 89.3%
Taylor expanded in k around 0
lower-*.f64N/A
lower-pow.f64100.0
Applied rewrites100.0%
if -4.9999999999999999e-13 < m < 1.68e-6Initial program 93.4%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6493.4
Applied rewrites93.4%
Final simplification97.7%
(FPCore (a k m)
:precision binary64
(if (<= m -1.45e+16)
(* a (/ (- 1.0 (/ (+ 10.0 (/ -99.0 k)) k)) (* k k)))
(if (<= m 0.7)
(/ a (fma k (+ k 10.0) 1.0))
(/ (* (* k k) (* a (* a 100.0))) (- (* a (* k -10.0)) a)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -1.45e+16) {
tmp = a * ((1.0 - ((10.0 + (-99.0 / k)) / k)) / (k * k));
} else if (m <= 0.7) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = ((k * k) * (a * (a * 100.0))) / ((a * (k * -10.0)) - a);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -1.45e+16) tmp = Float64(a * Float64(Float64(1.0 - Float64(Float64(10.0 + Float64(-99.0 / k)) / k)) / Float64(k * k))); elseif (m <= 0.7) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(Float64(Float64(k * k) * Float64(a * Float64(a * 100.0))) / Float64(Float64(a * Float64(k * -10.0)) - a)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -1.45e+16], N[(a * N[(N[(1.0 - N[(N[(10.0 + N[(-99.0 / k), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.7], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(N[(k * k), $MachinePrecision] * N[(a * N[(a * 100.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(a * N[(k * -10.0), $MachinePrecision]), $MachinePrecision] - a), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -1.45 \cdot 10^{+16}:\\
\;\;\;\;a \cdot \frac{1 - \frac{10 + \frac{-99}{k}}{k}}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.7:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(k \cdot k\right) \cdot \left(a \cdot \left(a \cdot 100\right)\right)}{a \cdot \left(k \cdot -10\right) - a}\\
\end{array}
\end{array}
if m < -1.45e16Initial 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-+.f6435.8
Applied rewrites35.8%
Applied rewrites35.8%
Taylor expanded in k around -inf
Applied rewrites78.0%
if -1.45e16 < m < 0.69999999999999996Initial program 93.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-+.f6492.4
Applied rewrites92.4%
if 0.69999999999999996 < m Initial program 79.3%
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-+.f643.4
Applied rewrites3.4%
Taylor expanded in k around 0
Applied rewrites8.7%
Applied rewrites20.7%
Taylor expanded in k around inf
Applied rewrites38.8%
Final simplification69.7%
(FPCore (a k m)
:precision binary64
(if (<= m -1.45e+16)
(/ a (* k k))
(if (<= m 0.7)
(/ a (fma k (+ k 10.0) 1.0))
(/ (* (* k k) (* a (* a 100.0))) (- (* a (* k -10.0)) a)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -1.45e+16) {
tmp = a / (k * k);
} else if (m <= 0.7) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = ((k * k) * (a * (a * 100.0))) / ((a * (k * -10.0)) - a);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -1.45e+16) tmp = Float64(a / Float64(k * k)); elseif (m <= 0.7) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = Float64(Float64(Float64(k * k) * Float64(a * Float64(a * 100.0))) / Float64(Float64(a * Float64(k * -10.0)) - a)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -1.45e+16], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.7], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(N[(N[(k * k), $MachinePrecision] * N[(a * N[(a * 100.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(a * N[(k * -10.0), $MachinePrecision]), $MachinePrecision] - a), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -1.45 \cdot 10^{+16}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.7:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(k \cdot k\right) \cdot \left(a \cdot \left(a \cdot 100\right)\right)}{a \cdot \left(k \cdot -10\right) - a}\\
\end{array}
\end{array}
if m < -1.45e16Initial 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-+.f6435.8
Applied rewrites35.8%
Taylor expanded in k around inf
Applied rewrites74.4%
if -1.45e16 < m < 0.69999999999999996Initial program 93.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-+.f6492.4
Applied rewrites92.4%
if 0.69999999999999996 < m Initial program 79.3%
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-+.f643.4
Applied rewrites3.4%
Taylor expanded in k around 0
Applied rewrites8.7%
Applied rewrites20.7%
Taylor expanded in k around inf
Applied rewrites38.8%
Final simplification68.6%
(FPCore (a k m)
:precision binary64
(if (<= m -1.45e+16)
(/ a (* k k))
(if (<= m 0.85)
(/ a (fma k (+ k 10.0) 1.0))
(if (<= m 4e+61)
(* k (* a -10.0))
(* a (fma k (fma k 99.0 -10.0) 1.0))))))
double code(double a, double k, double m) {
double tmp;
if (m <= -1.45e+16) {
tmp = a / (k * k);
} else if (m <= 0.85) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else if (m <= 4e+61) {
tmp = k * (a * -10.0);
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -1.45e+16) tmp = Float64(a / Float64(k * k)); elseif (m <= 0.85) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); elseif (m <= 4e+61) tmp = Float64(k * Float64(a * -10.0)); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -1.45e+16], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.85], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 4e+61], N[(k * N[(a * -10.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -1.45 \cdot 10^{+16}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.85:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{elif}\;m \leq 4 \cdot 10^{+61}:\\
\;\;\;\;k \cdot \left(a \cdot -10\right)\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if m < -1.45e16Initial 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-+.f6435.8
Applied rewrites35.8%
Taylor expanded in k around inf
Applied rewrites74.4%
if -1.45e16 < m < 0.849999999999999978Initial program 93.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-+.f6492.4
Applied rewrites92.4%
if 0.849999999999999978 < m < 3.9999999999999998e61Initial program 76.2%
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-+.f643.6
Applied rewrites3.6%
Taylor expanded in k around 0
Applied rewrites12.9%
Taylor expanded in k around inf
Applied rewrites48.8%
if 3.9999999999999998e61 < m Initial program 80.3%
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-+.f643.3
Applied rewrites3.3%
Applied rewrites3.3%
Taylor expanded in k around 0
Applied rewrites27.5%
Final simplification66.5%
(FPCore (a k m)
:precision binary64
(if (<= m -2.8e-69)
(/ a (* k k))
(if (<= m 0.85)
(/ a (fma k 10.0 1.0))
(if (<= m 4e+61)
(* k (* a -10.0))
(* a (fma k (fma k 99.0 -10.0) 1.0))))))
double code(double a, double k, double m) {
double tmp;
if (m <= -2.8e-69) {
tmp = a / (k * k);
} else if (m <= 0.85) {
tmp = a / fma(k, 10.0, 1.0);
} else if (m <= 4e+61) {
tmp = k * (a * -10.0);
} else {
tmp = a * fma(k, fma(k, 99.0, -10.0), 1.0);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -2.8e-69) tmp = Float64(a / Float64(k * k)); elseif (m <= 0.85) tmp = Float64(a / fma(k, 10.0, 1.0)); elseif (m <= 4e+61) tmp = Float64(k * Float64(a * -10.0)); else tmp = Float64(a * fma(k, fma(k, 99.0, -10.0), 1.0)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -2.8e-69], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.85], N[(a / N[(k * 10.0 + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 4e+61], N[(k * N[(a * -10.0), $MachinePrecision]), $MachinePrecision], N[(a * N[(k * N[(k * 99.0 + -10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -2.8 \cdot 10^{-69}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.85:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, 1\right)}\\
\mathbf{elif}\;m \leq 4 \cdot 10^{+61}:\\
\;\;\;\;k \cdot \left(a \cdot -10\right)\\
\mathbf{else}:\\
\;\;\;\;a \cdot \mathsf{fma}\left(k, \mathsf{fma}\left(k, 99, -10\right), 1\right)\\
\end{array}
\end{array}
if m < -2.79999999999999979e-69Initial program 98.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 rewrites71.1%
if -2.79999999999999979e-69 < m < 0.849999999999999978Initial program 94.8%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6493.7
Applied rewrites93.7%
Taylor expanded in k around 0
Applied rewrites67.1%
if 0.849999999999999978 < m < 3.9999999999999998e61Initial program 76.2%
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-+.f643.6
Applied rewrites3.6%
Taylor expanded in k around 0
Applied rewrites12.9%
Taylor expanded in k around inf
Applied rewrites48.8%
if 3.9999999999999998e61 < m Initial program 80.3%
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-+.f643.3
Applied rewrites3.3%
Applied rewrites3.3%
Taylor expanded in k around 0
Applied rewrites27.5%
Final simplification56.9%
(FPCore (a k m) :precision binary64 (if (<= m -1.1e-117) (/ a (* k k)) (if (<= m 0.7) (* a 1.0) (* k (* a -10.0)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -1.1e-117) {
tmp = a / (k * k);
} else if (m <= 0.7) {
tmp = a * 1.0;
} else {
tmp = k * (a * -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 <= (-1.1d-117)) then
tmp = a / (k * k)
else if (m <= 0.7d0) then
tmp = a * 1.0d0
else
tmp = k * (a * (-10.0d0))
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (m <= -1.1e-117) {
tmp = a / (k * k);
} else if (m <= 0.7) {
tmp = a * 1.0;
} else {
tmp = k * (a * -10.0);
}
return tmp;
}
def code(a, k, m): tmp = 0 if m <= -1.1e-117: tmp = a / (k * k) elif m <= 0.7: tmp = a * 1.0 else: tmp = k * (a * -10.0) return tmp
function code(a, k, m) tmp = 0.0 if (m <= -1.1e-117) tmp = Float64(a / Float64(k * k)); elseif (m <= 0.7) tmp = Float64(a * 1.0); else tmp = Float64(k * Float64(a * -10.0)); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (m <= -1.1e-117) tmp = a / (k * k); elseif (m <= 0.7) tmp = a * 1.0; else tmp = k * (a * -10.0); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[m, -1.1e-117], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 0.7], N[(a * 1.0), $MachinePrecision], N[(k * N[(a * -10.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -1.1 \cdot 10^{-117}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 0.7:\\
\;\;\;\;a \cdot 1\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(a \cdot -10\right)\\
\end{array}
\end{array}
if m < -1.1000000000000001e-117Initial program 98.2%
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.6
Applied rewrites48.6%
Taylor expanded in k around inf
Applied rewrites69.9%
if -1.1000000000000001e-117 < m < 0.69999999999999996Initial program 94.1%
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-+.f6492.9
Applied rewrites92.9%
Applied rewrites92.8%
Taylor expanded in k around 0
Applied rewrites53.1%
if 0.69999999999999996 < m Initial program 79.3%
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-+.f643.4
Applied rewrites3.4%
Taylor expanded in k around 0
Applied rewrites8.7%
Taylor expanded in k around inf
Applied rewrites24.3%
Final simplification50.1%
(FPCore (a k m) :precision binary64 (if (<= m 0.7) (* a 1.0) (* k (* a -10.0))))
double code(double a, double k, double m) {
double tmp;
if (m <= 0.7) {
tmp = a * 1.0;
} else {
tmp = k * (a * -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.7d0) then
tmp = a * 1.0d0
else
tmp = k * (a * (-10.0d0))
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (m <= 0.7) {
tmp = a * 1.0;
} else {
tmp = k * (a * -10.0);
}
return tmp;
}
def code(a, k, m): tmp = 0 if m <= 0.7: tmp = a * 1.0 else: tmp = k * (a * -10.0) return tmp
function code(a, k, m) tmp = 0.0 if (m <= 0.7) tmp = Float64(a * 1.0); else tmp = Float64(k * Float64(a * -10.0)); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (m <= 0.7) tmp = a * 1.0; else tmp = k * (a * -10.0); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[m, 0.7], N[(a * 1.0), $MachinePrecision], N[(k * N[(a * -10.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq 0.7:\\
\;\;\;\;a \cdot 1\\
\mathbf{else}:\\
\;\;\;\;k \cdot \left(a \cdot -10\right)\\
\end{array}
\end{array}
if m < 0.69999999999999996Initial program 96.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-+.f6465.9
Applied rewrites65.9%
Applied rewrites65.9%
Taylor expanded in k around 0
Applied rewrites28.1%
if 0.69999999999999996 < m Initial program 79.3%
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-+.f643.4
Applied rewrites3.4%
Taylor expanded in k around 0
Applied rewrites8.7%
Taylor expanded in k around inf
Applied rewrites24.3%
Final simplification26.8%
(FPCore (a k m) :precision binary64 (* a 1.0))
double code(double a, double k, double m) {
return a * 1.0;
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
code = a * 1.0d0
end function
public static double code(double a, double k, double m) {
return a * 1.0;
}
def code(a, k, m): return a * 1.0
function code(a, k, m) return Float64(a * 1.0) end
function tmp = code(a, k, m) tmp = a * 1.0; end
code[a_, k_, m_] := N[(a * 1.0), $MachinePrecision]
\begin{array}{l}
\\
a \cdot 1
\end{array}
Initial program 90.7%
Taylor expanded in m around 0
lower-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
lower-+.f6444.6
Applied rewrites44.6%
Applied rewrites44.6%
Taylor expanded in k around 0
Applied rewrites20.0%
Final simplification20.0%
herbie shell --seed 2024233
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))