
(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 19 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 (pow k (* m 0.5)))) (if (<= k 1.0) (* a (pow k m)) (* (/ t_0 k) (/ (* a t_0) k)))))
double code(double a, double k, double m) {
double t_0 = pow(k, (m * 0.5));
double tmp;
if (k <= 1.0) {
tmp = a * pow(k, m);
} else {
tmp = (t_0 / k) * ((a * t_0) / k);
}
return tmp;
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
real(8) :: t_0
real(8) :: tmp
t_0 = k ** (m * 0.5d0)
if (k <= 1.0d0) then
tmp = a * (k ** m)
else
tmp = (t_0 / k) * ((a * t_0) / k)
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double t_0 = Math.pow(k, (m * 0.5));
double tmp;
if (k <= 1.0) {
tmp = a * Math.pow(k, m);
} else {
tmp = (t_0 / k) * ((a * t_0) / k);
}
return tmp;
}
def code(a, k, m): t_0 = math.pow(k, (m * 0.5)) tmp = 0 if k <= 1.0: tmp = a * math.pow(k, m) else: tmp = (t_0 / k) * ((a * t_0) / k) return tmp
function code(a, k, m) t_0 = k ^ Float64(m * 0.5) tmp = 0.0 if (k <= 1.0) tmp = Float64(a * (k ^ m)); else tmp = Float64(Float64(t_0 / k) * Float64(Float64(a * t_0) / k)); end return tmp end
function tmp_2 = code(a, k, m) t_0 = k ^ (m * 0.5); tmp = 0.0; if (k <= 1.0) tmp = a * (k ^ m); else tmp = (t_0 / k) * ((a * t_0) / k); end tmp_2 = tmp; end
code[a_, k_, m_] := Block[{t$95$0 = N[Power[k, N[(m * 0.5), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[k, 1.0], N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision], N[(N[(t$95$0 / k), $MachinePrecision] * N[(N[(a * t$95$0), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := {k}^{\left(m \cdot 0.5\right)}\\
\mathbf{if}\;k \leq 1:\\
\;\;\;\;a \cdot {k}^{m}\\
\mathbf{else}:\\
\;\;\;\;\frac{t\_0}{k} \cdot \frac{a \cdot t\_0}{k}\\
\end{array}
\end{array}
if k < 1Initial program 93.7%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f6498.2
Simplified98.2%
if 1 < k Initial program 76.4%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6475.8
Simplified75.8%
*-commutativeN/A
sqr-powN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
div-invN/A
*-lowering-*.f64N/A
metadata-evalN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
div-invN/A
*-lowering-*.f64N/A
metadata-eval99.2
Applied egg-rr99.2%
Final simplification98.6%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ (* a (pow k m)) (+ (+ (* k 10.0) 1.0) (* k k)))))
(if (<= t_0 0.0)
(/
a
(fma
k
(*
(fma k k -100.0)
(/ (+ (/ (+ (/ 100.0 k) (+ 10.0 (/ 1000.0 (* k k)))) k) 1.0) k))
1.0))
(if (<= t_0 1e+301)
(/ a (+ (* k (+ k 10.0)) 1.0))
(if (<= t_0 INFINITY)
(/
(fma a (/ 99.0 (* k k)) (fma a (/ 9801.0 (* k (* k (* k k)))) a))
(* k k))
(fma k (* a (fma 100.0 k -10.0)) a))))))
double code(double a, double k, double m) {
double t_0 = (a * pow(k, m)) / (((k * 10.0) + 1.0) + (k * k));
double tmp;
if (t_0 <= 0.0) {
tmp = a / fma(k, (fma(k, k, -100.0) * (((((100.0 / k) + (10.0 + (1000.0 / (k * k)))) / k) + 1.0) / k)), 1.0);
} else if (t_0 <= 1e+301) {
tmp = a / ((k * (k + 10.0)) + 1.0);
} else if (t_0 <= ((double) INFINITY)) {
tmp = fma(a, (99.0 / (k * k)), fma(a, (9801.0 / (k * (k * (k * k)))), a)) / (k * k);
} else {
tmp = fma(k, (a * fma(100.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(Float64(a * (k ^ m)) / Float64(Float64(Float64(k * 10.0) + 1.0) + Float64(k * k))) tmp = 0.0 if (t_0 <= 0.0) tmp = Float64(a / fma(k, Float64(fma(k, k, -100.0) * Float64(Float64(Float64(Float64(Float64(100.0 / k) + Float64(10.0 + Float64(1000.0 / Float64(k * k)))) / k) + 1.0) / k)), 1.0)); elseif (t_0 <= 1e+301) tmp = Float64(a / Float64(Float64(k * Float64(k + 10.0)) + 1.0)); elseif (t_0 <= Inf) tmp = Float64(fma(a, Float64(99.0 / Float64(k * k)), fma(a, Float64(9801.0 / Float64(k * Float64(k * Float64(k * k)))), a)) / Float64(k * k)); else tmp = fma(k, Float64(a * fma(100.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = 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$0, 0.0], N[(a / N[(k * N[(N[(k * k + -100.0), $MachinePrecision] * N[(N[(N[(N[(N[(100.0 / k), $MachinePrecision] + N[(10.0 + N[(1000.0 / N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision] + 1.0), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+301], N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(N[(a * N[(99.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + N[(a * N[(9801.0 / N[(k * N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(100.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a \cdot {k}^{m}}{\left(k \cdot 10 + 1\right) + k \cdot k}\\
\mathbf{if}\;t\_0 \leq 0:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, \mathsf{fma}\left(k, k, -100\right) \cdot \frac{\frac{\frac{100}{k} + \left(10 + \frac{1000}{k \cdot k}\right)}{k} + 1}{k}, 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+301}:\\
\;\;\;\;\frac{a}{k \cdot \left(k + 10\right) + 1}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(a, \frac{99}{k \cdot k}, \mathsf{fma}\left(a, \frac{9801}{k \cdot \left(k \cdot \left(k \cdot k\right)\right)}, a\right)\right)}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(100, k, -10\right), a\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.6%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6447.6
Simplified47.6%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval47.6
Applied egg-rr47.6%
Taylor expanded in k around -inf
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
/-lowering-/.f64N/A
Simplified54.5%
if 0.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.00000000000000005e301Initial program 99.9%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6499.8
Simplified99.8%
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f6499.9
Applied egg-rr99.9%
if 1.00000000000000005e301 < (/.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 100.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.3
Simplified3.3%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval3.3
Applied egg-rr3.3%
Taylor expanded in k around inf
/-lowering-/.f641.1
Simplified1.1%
Taylor expanded in k around inf
/-lowering-/.f64N/A
Simplified61.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%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval1.6
Applied egg-rr1.6%
Taylor expanded in k around 0
Simplified1.6%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6486.1
Simplified86.1%
Final simplification63.0%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ (* a (pow k m)) (+ (+ (* k 10.0) 1.0) (* k k)))))
(if (<= t_0 0.0)
(/
a
(fma
k
(* (fma k k -100.0) (/ (+ (/ (+ 10.0 (/ 100.0 k)) k) 1.0) k))
1.0))
(if (<= t_0 1e+301)
(/ a (+ (* k (+ k 10.0)) 1.0))
(if (<= t_0 INFINITY)
(/
(fma a (/ 99.0 (* k k)) (fma a (/ 9801.0 (* k (* k (* k k)))) a))
(* k k))
(fma k (* a (fma 100.0 k -10.0)) a))))))
double code(double a, double k, double m) {
double t_0 = (a * pow(k, m)) / (((k * 10.0) + 1.0) + (k * k));
double tmp;
if (t_0 <= 0.0) {
tmp = a / fma(k, (fma(k, k, -100.0) * ((((10.0 + (100.0 / k)) / k) + 1.0) / k)), 1.0);
} else if (t_0 <= 1e+301) {
tmp = a / ((k * (k + 10.0)) + 1.0);
} else if (t_0 <= ((double) INFINITY)) {
tmp = fma(a, (99.0 / (k * k)), fma(a, (9801.0 / (k * (k * (k * k)))), a)) / (k * k);
} else {
tmp = fma(k, (a * fma(100.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(Float64(a * (k ^ m)) / Float64(Float64(Float64(k * 10.0) + 1.0) + Float64(k * k))) tmp = 0.0 if (t_0 <= 0.0) tmp = Float64(a / fma(k, Float64(fma(k, k, -100.0) * Float64(Float64(Float64(Float64(10.0 + Float64(100.0 / k)) / k) + 1.0) / k)), 1.0)); elseif (t_0 <= 1e+301) tmp = Float64(a / Float64(Float64(k * Float64(k + 10.0)) + 1.0)); elseif (t_0 <= Inf) tmp = Float64(fma(a, Float64(99.0 / Float64(k * k)), fma(a, Float64(9801.0 / Float64(k * Float64(k * Float64(k * k)))), a)) / Float64(k * k)); else tmp = fma(k, Float64(a * fma(100.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = 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$0, 0.0], N[(a / N[(k * N[(N[(k * k + -100.0), $MachinePrecision] * N[(N[(N[(N[(10.0 + N[(100.0 / k), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision] + 1.0), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+301], N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(N[(a * N[(99.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + N[(a * N[(9801.0 / N[(k * N[(k * N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(100.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a \cdot {k}^{m}}{\left(k \cdot 10 + 1\right) + k \cdot k}\\
\mathbf{if}\;t\_0 \leq 0:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, \mathsf{fma}\left(k, k, -100\right) \cdot \frac{\frac{10 + \frac{100}{k}}{k} + 1}{k}, 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+301}:\\
\;\;\;\;\frac{a}{k \cdot \left(k + 10\right) + 1}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(a, \frac{99}{k \cdot k}, \mathsf{fma}\left(a, \frac{9801}{k \cdot \left(k \cdot \left(k \cdot k\right)\right)}, a\right)\right)}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(100, k, -10\right), a\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.6%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6447.6
Simplified47.6%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval47.6
Applied egg-rr47.6%
Taylor expanded in k around -inf
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-lowering-neg.f6453.0
Simplified53.0%
if 0.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.00000000000000005e301Initial program 99.9%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6499.8
Simplified99.8%
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f6499.9
Applied egg-rr99.9%
if 1.00000000000000005e301 < (/.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 100.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.3
Simplified3.3%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval3.3
Applied egg-rr3.3%
Taylor expanded in k around inf
/-lowering-/.f641.1
Simplified1.1%
Taylor expanded in k around inf
/-lowering-/.f64N/A
Simplified61.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%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval1.6
Applied egg-rr1.6%
Taylor expanded in k around 0
Simplified1.6%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6486.1
Simplified86.1%
Final simplification61.8%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ (* a (pow k m)) (+ (+ (* k 10.0) 1.0) (* k k)))))
(if (<= t_0 0.0)
(/
a
(fma
k
(* (fma k k -100.0) (/ (+ (/ (+ 10.0 (/ 100.0 k)) k) 1.0) k))
1.0))
(if (<= t_0 1e+301)
(/ a (+ (* k (+ k 10.0)) 1.0))
(if (<= t_0 INFINITY)
(/ (fma a (/ 99.0 (* k k)) a) (* k k))
(fma k (* a (fma 100.0 k -10.0)) a))))))
double code(double a, double k, double m) {
double t_0 = (a * pow(k, m)) / (((k * 10.0) + 1.0) + (k * k));
double tmp;
if (t_0 <= 0.0) {
tmp = a / fma(k, (fma(k, k, -100.0) * ((((10.0 + (100.0 / k)) / k) + 1.0) / k)), 1.0);
} else if (t_0 <= 1e+301) {
tmp = a / ((k * (k + 10.0)) + 1.0);
} else if (t_0 <= ((double) INFINITY)) {
tmp = fma(a, (99.0 / (k * k)), a) / (k * k);
} else {
tmp = fma(k, (a * fma(100.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(Float64(a * (k ^ m)) / Float64(Float64(Float64(k * 10.0) + 1.0) + Float64(k * k))) tmp = 0.0 if (t_0 <= 0.0) tmp = Float64(a / fma(k, Float64(fma(k, k, -100.0) * Float64(Float64(Float64(Float64(10.0 + Float64(100.0 / k)) / k) + 1.0) / k)), 1.0)); elseif (t_0 <= 1e+301) tmp = Float64(a / Float64(Float64(k * Float64(k + 10.0)) + 1.0)); elseif (t_0 <= Inf) tmp = Float64(fma(a, Float64(99.0 / Float64(k * k)), a) / Float64(k * k)); else tmp = fma(k, Float64(a * fma(100.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = 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$0, 0.0], N[(a / N[(k * N[(N[(k * k + -100.0), $MachinePrecision] * N[(N[(N[(N[(10.0 + N[(100.0 / k), $MachinePrecision]), $MachinePrecision] / k), $MachinePrecision] + 1.0), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+301], N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(N[(a * N[(99.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(100.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a \cdot {k}^{m}}{\left(k \cdot 10 + 1\right) + k \cdot k}\\
\mathbf{if}\;t\_0 \leq 0:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, \mathsf{fma}\left(k, k, -100\right) \cdot \frac{\frac{10 + \frac{100}{k}}{k} + 1}{k}, 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+301}:\\
\;\;\;\;\frac{a}{k \cdot \left(k + 10\right) + 1}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(a, \frac{99}{k \cdot k}, a\right)}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(100, k, -10\right), a\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.6%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6447.6
Simplified47.6%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval47.6
Applied egg-rr47.6%
Taylor expanded in k around -inf
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
/-lowering-/.f64N/A
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
mul-1-negN/A
neg-lowering-neg.f6453.0
Simplified53.0%
if 0.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.00000000000000005e301Initial program 99.9%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6499.8
Simplified99.8%
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f6499.9
Applied egg-rr99.9%
if 1.00000000000000005e301 < (/.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 100.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.3
Simplified3.3%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval3.3
Applied egg-rr3.3%
Taylor expanded in k around inf
/-lowering-/.f641.1
Simplified1.1%
Taylor expanded in k around inf
/-lowering-/.f64N/A
+-commutativeN/A
associate-*r/N/A
*-commutativeN/A
associate-/l*N/A
metadata-evalN/A
associate-*r/N/A
accelerator-lowering-fma.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6450.1
Simplified50.1%
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%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval1.6
Applied egg-rr1.6%
Taylor expanded in k around 0
Simplified1.6%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6486.1
Simplified86.1%
Final simplification60.8%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ (* a (pow k m)) (+ (+ (* k 10.0) 1.0) (* k k)))))
(if (<= t_0 0.0)
(/ a (fma k (* (fma k k -100.0) (/ (+ (/ 10.0 k) 1.0) k)) 1.0))
(if (<= t_0 1e+301)
(/ a (+ (* k (+ k 10.0)) 1.0))
(if (<= t_0 INFINITY)
(/ (fma a (/ 99.0 (* k k)) a) (* k k))
(fma k (* a (fma 100.0 k -10.0)) a))))))
double code(double a, double k, double m) {
double t_0 = (a * pow(k, m)) / (((k * 10.0) + 1.0) + (k * k));
double tmp;
if (t_0 <= 0.0) {
tmp = a / fma(k, (fma(k, k, -100.0) * (((10.0 / k) + 1.0) / k)), 1.0);
} else if (t_0 <= 1e+301) {
tmp = a / ((k * (k + 10.0)) + 1.0);
} else if (t_0 <= ((double) INFINITY)) {
tmp = fma(a, (99.0 / (k * k)), a) / (k * k);
} else {
tmp = fma(k, (a * fma(100.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(Float64(a * (k ^ m)) / Float64(Float64(Float64(k * 10.0) + 1.0) + Float64(k * k))) tmp = 0.0 if (t_0 <= 0.0) tmp = Float64(a / fma(k, Float64(fma(k, k, -100.0) * Float64(Float64(Float64(10.0 / k) + 1.0) / k)), 1.0)); elseif (t_0 <= 1e+301) tmp = Float64(a / Float64(Float64(k * Float64(k + 10.0)) + 1.0)); elseif (t_0 <= Inf) tmp = Float64(fma(a, Float64(99.0 / Float64(k * k)), a) / Float64(k * k)); else tmp = fma(k, Float64(a * fma(100.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = 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$0, 0.0], N[(a / N[(k * N[(N[(k * k + -100.0), $MachinePrecision] * N[(N[(N[(10.0 / k), $MachinePrecision] + 1.0), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+301], N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(N[(a * N[(99.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(100.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a \cdot {k}^{m}}{\left(k \cdot 10 + 1\right) + k \cdot k}\\
\mathbf{if}\;t\_0 \leq 0:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, \mathsf{fma}\left(k, k, -100\right) \cdot \frac{\frac{10}{k} + 1}{k}, 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+301}:\\
\;\;\;\;\frac{a}{k \cdot \left(k + 10\right) + 1}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(a, \frac{99}{k \cdot k}, a\right)}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(100, k, -10\right), a\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.6%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6447.6
Simplified47.6%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval47.6
Applied egg-rr47.6%
Taylor expanded in k around inf
/-lowering-/.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f6449.7
Simplified49.7%
if 0.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.00000000000000005e301Initial program 99.9%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6499.8
Simplified99.8%
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f6499.9
Applied egg-rr99.9%
if 1.00000000000000005e301 < (/.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 100.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.3
Simplified3.3%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval3.3
Applied egg-rr3.3%
Taylor expanded in k around inf
/-lowering-/.f641.1
Simplified1.1%
Taylor expanded in k around inf
/-lowering-/.f64N/A
+-commutativeN/A
associate-*r/N/A
*-commutativeN/A
associate-/l*N/A
metadata-evalN/A
associate-*r/N/A
accelerator-lowering-fma.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6450.1
Simplified50.1%
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%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval1.6
Applied egg-rr1.6%
Taylor expanded in k around 0
Simplified1.6%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6486.1
Simplified86.1%
Final simplification58.5%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ (* a (pow k m)) (+ (+ (* k 10.0) 1.0) (* k k)))))
(if (<= t_0 0.0)
(/ a (* k (fma k (/ -99.0 (* k k)) k)))
(if (<= t_0 1e+301)
(/ a (+ (* k (+ k 10.0)) 1.0))
(if (<= t_0 INFINITY)
(/ (fma a (/ 99.0 (* k k)) a) (* k k))
(fma k (* a (fma 100.0 k -10.0)) a))))))
double code(double a, double k, double m) {
double t_0 = (a * pow(k, m)) / (((k * 10.0) + 1.0) + (k * k));
double tmp;
if (t_0 <= 0.0) {
tmp = a / (k * fma(k, (-99.0 / (k * k)), k));
} else if (t_0 <= 1e+301) {
tmp = a / ((k * (k + 10.0)) + 1.0);
} else if (t_0 <= ((double) INFINITY)) {
tmp = fma(a, (99.0 / (k * k)), a) / (k * k);
} else {
tmp = fma(k, (a * fma(100.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(Float64(a * (k ^ m)) / Float64(Float64(Float64(k * 10.0) + 1.0) + Float64(k * k))) tmp = 0.0 if (t_0 <= 0.0) tmp = Float64(a / Float64(k * fma(k, Float64(-99.0 / Float64(k * k)), k))); elseif (t_0 <= 1e+301) tmp = Float64(a / Float64(Float64(k * Float64(k + 10.0)) + 1.0)); elseif (t_0 <= Inf) tmp = Float64(fma(a, Float64(99.0 / Float64(k * k)), a) / Float64(k * k)); else tmp = fma(k, Float64(a * fma(100.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = 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$0, 0.0], N[(a / N[(k * N[(k * N[(-99.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+301], N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(N[(a * N[(99.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision] / N[(k * k), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(100.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a \cdot {k}^{m}}{\left(k \cdot 10 + 1\right) + k \cdot k}\\
\mathbf{if}\;t\_0 \leq 0:\\
\;\;\;\;\frac{a}{k \cdot \mathsf{fma}\left(k, \frac{-99}{k \cdot k}, k\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+301}:\\
\;\;\;\;\frac{a}{k \cdot \left(k + 10\right) + 1}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(a, \frac{99}{k \cdot k}, a\right)}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(100, k, -10\right), a\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.6%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6447.6
Simplified47.6%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval47.6
Applied egg-rr47.6%
Taylor expanded in k around inf
/-lowering-/.f6434.6
Simplified34.6%
Taylor expanded in k around inf
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
sub-negN/A
+-commutativeN/A
distribute-lft-inN/A
*-rgt-identityN/A
accelerator-lowering-fma.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6448.0
Simplified48.0%
if 0.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.00000000000000005e301Initial program 99.9%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6499.8
Simplified99.8%
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f6499.9
Applied egg-rr99.9%
if 1.00000000000000005e301 < (/.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 100.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.3
Simplified3.3%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval3.3
Applied egg-rr3.3%
Taylor expanded in k around inf
/-lowering-/.f641.1
Simplified1.1%
Taylor expanded in k around inf
/-lowering-/.f64N/A
+-commutativeN/A
associate-*r/N/A
*-commutativeN/A
associate-/l*N/A
metadata-evalN/A
associate-*r/N/A
accelerator-lowering-fma.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6450.1
Simplified50.1%
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%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval1.6
Applied egg-rr1.6%
Taylor expanded in k around 0
Simplified1.6%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6486.1
Simplified86.1%
Final simplification57.3%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ (* a (pow k m)) (+ (+ (* k 10.0) 1.0) (* k k)))))
(if (<= t_0 0.0)
(/ a (* k (fma k (/ -99.0 (* k k)) k)))
(if (<= t_0 1e+301)
(/ a (+ (* k (+ k 10.0)) 1.0))
(if (<= t_0 INFINITY)
(/ a (* k k))
(fma k (* a (fma 100.0 k -10.0)) a))))))
double code(double a, double k, double m) {
double t_0 = (a * pow(k, m)) / (((k * 10.0) + 1.0) + (k * k));
double tmp;
if (t_0 <= 0.0) {
tmp = a / (k * fma(k, (-99.0 / (k * k)), k));
} else if (t_0 <= 1e+301) {
tmp = a / ((k * (k + 10.0)) + 1.0);
} else if (t_0 <= ((double) INFINITY)) {
tmp = a / (k * k);
} else {
tmp = fma(k, (a * fma(100.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) t_0 = Float64(Float64(a * (k ^ m)) / Float64(Float64(Float64(k * 10.0) + 1.0) + Float64(k * k))) tmp = 0.0 if (t_0 <= 0.0) tmp = Float64(a / Float64(k * fma(k, Float64(-99.0 / Float64(k * k)), k))); elseif (t_0 <= 1e+301) tmp = Float64(a / Float64(Float64(k * Float64(k + 10.0)) + 1.0)); elseif (t_0 <= Inf) tmp = Float64(a / Float64(k * k)); else tmp = fma(k, Float64(a * fma(100.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := Block[{t$95$0 = 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$0, 0.0], N[(a / N[(k * N[(k * N[(-99.0 / N[(k * k), $MachinePrecision]), $MachinePrecision] + k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+301], N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, Infinity], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(100.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a \cdot {k}^{m}}{\left(k \cdot 10 + 1\right) + k \cdot k}\\
\mathbf{if}\;t\_0 \leq 0:\\
\;\;\;\;\frac{a}{k \cdot \mathsf{fma}\left(k, \frac{-99}{k \cdot k}, k\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+301}:\\
\;\;\;\;\frac{a}{k \cdot \left(k + 10\right) + 1}\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(100, k, -10\right), a\right)\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 0.0Initial program 96.6%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6447.6
Simplified47.6%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval47.6
Applied egg-rr47.6%
Taylor expanded in k around inf
/-lowering-/.f6434.6
Simplified34.6%
Taylor expanded in k around inf
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
sub-negN/A
+-commutativeN/A
distribute-lft-inN/A
*-rgt-identityN/A
accelerator-lowering-fma.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6448.0
Simplified48.0%
if 0.0 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.00000000000000005e301Initial program 99.9%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6499.8
Simplified99.8%
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f6499.9
Applied egg-rr99.9%
if 1.00000000000000005e301 < (/.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 100.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.3
Simplified3.3%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6445.4
Simplified45.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
/-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%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval1.6
Applied egg-rr1.6%
Taylor expanded in k around 0
Simplified1.6%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6486.1
Simplified86.1%
Final simplification56.9%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (* a (pow k m))))
(if (<= (/ t_0 (+ (+ (* k 10.0) 1.0) (* k k))) 1e+244)
(* a (/ (pow k m) (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 ((t_0 / (((k * 10.0) + 1.0) + (k * k))) <= 1e+244) {
tmp = a * (pow(k, m) / 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 (Float64(t_0 / Float64(Float64(Float64(k * 10.0) + 1.0) + Float64(k * k))) <= 1e+244) tmp = Float64(a * Float64((k ^ m) / 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[N[(t$95$0 / N[(N[(N[(k * 10.0), $MachinePrecision] + 1.0), $MachinePrecision] + N[(k * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 1e+244], N[(a * N[(N[Power[k, m], $MachinePrecision] / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := a \cdot {k}^{m}\\
\mathbf{if}\;\frac{t\_0}{\left(k \cdot 10 + 1\right) + k \cdot k} \leq 10^{+244}:\\
\;\;\;\;a \cdot \frac{{k}^{m}}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) < 1.00000000000000007e244Initial program 97.0%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
associate-+l+N/A
+-commutativeN/A
distribute-rgt-outN/A
accelerator-lowering-fma.f64N/A
+-lowering-+.f6497.0
Applied egg-rr97.0%
if 1.00000000000000007e244 < (/.f64 (*.f64 a (pow.f64 k m)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 10 binary64) k)) (*.f64 k k))) Initial program 48.1%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f64100.0
Simplified100.0%
Final simplification97.6%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (* a (pow k m))))
(if (<= m -0.0011)
t_0
(if (<= m 1.6e-25) (/ a (+ (* 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 <= -0.0011) {
tmp = t_0;
} else if (m <= 1.6e-25) {
tmp = a / ((k * (k + 10.0)) + 1.0);
} else {
tmp = t_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) :: t_0
real(8) :: tmp
t_0 = a * (k ** m)
if (m <= (-0.0011d0)) then
tmp = t_0
else if (m <= 1.6d-25) then
tmp = a / ((k * (k + 10.0d0)) + 1.0d0)
else
tmp = t_0
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double t_0 = a * Math.pow(k, m);
double tmp;
if (m <= -0.0011) {
tmp = t_0;
} else if (m <= 1.6e-25) {
tmp = a / ((k * (k + 10.0)) + 1.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(a, k, m): t_0 = a * math.pow(k, m) tmp = 0 if m <= -0.0011: tmp = t_0 elif m <= 1.6e-25: tmp = a / ((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 <= -0.0011) tmp = t_0; elseif (m <= 1.6e-25) tmp = Float64(a / Float64(Float64(k * Float64(k + 10.0)) + 1.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(a, k, m) t_0 = a * (k ^ m); tmp = 0.0; if (m <= -0.0011) tmp = t_0; elseif (m <= 1.6e-25) tmp = a / ((k * (k + 10.0)) + 1.0); else tmp = t_0; end tmp_2 = tmp; end
code[a_, k_, m_] := Block[{t$95$0 = N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[m, -0.0011], t$95$0, If[LessEqual[m, 1.6e-25], N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := a \cdot {k}^{m}\\
\mathbf{if}\;m \leq -0.0011:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;m \leq 1.6 \cdot 10^{-25}:\\
\;\;\;\;\frac{a}{k \cdot \left(k + 10\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if m < -0.00110000000000000007 or 1.6000000000000001e-25 < m Initial program 83.7%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f6499.4
Simplified99.4%
if -0.00110000000000000007 < m < 1.6000000000000001e-25Initial program 93.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-+.f6493.1
Simplified93.1%
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f6493.1
Applied egg-rr93.1%
(FPCore (a k m) :precision binary64 (if (<= k 1.0) (* a (pow k m)) (* a (pow k (+ m -2.0)))))
double code(double a, double k, double m) {
double tmp;
if (k <= 1.0) {
tmp = a * pow(k, m);
} else {
tmp = a * pow(k, (m + -2.0));
}
return tmp;
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
real(8) :: tmp
if (k <= 1.0d0) then
tmp = a * (k ** m)
else
tmp = a * (k ** (m + (-2.0d0)))
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (k <= 1.0) {
tmp = a * Math.pow(k, m);
} else {
tmp = a * Math.pow(k, (m + -2.0));
}
return tmp;
}
def code(a, k, m): tmp = 0 if k <= 1.0: tmp = a * math.pow(k, m) else: tmp = a * math.pow(k, (m + -2.0)) return tmp
function code(a, k, m) tmp = 0.0 if (k <= 1.0) tmp = Float64(a * (k ^ m)); else tmp = Float64(a * (k ^ Float64(m + -2.0))); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (k <= 1.0) tmp = a * (k ^ m); else tmp = a * (k ^ (m + -2.0)); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[k, 1.0], N[(a * N[Power[k, m], $MachinePrecision]), $MachinePrecision], N[(a * N[Power[k, N[(m + -2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;k \leq 1:\\
\;\;\;\;a \cdot {k}^{m}\\
\mathbf{else}:\\
\;\;\;\;a \cdot {k}^{\left(m + -2\right)}\\
\end{array}
\end{array}
if k < 1Initial program 93.7%
Taylor expanded in k around 0
*-lowering-*.f64N/A
pow-lowering-pow.f6498.2
Simplified98.2%
if 1 < k Initial program 76.4%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6475.8
Simplified75.8%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
pow2N/A
pow-divN/A
pow-lowering-pow.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval92.9
Applied egg-rr92.9%
Final simplification96.1%
(FPCore (a k m)
:precision binary64
(let* ((t_0 (/ a (* k k))))
(if (<= m -2.05e-107)
t_0
(if (<= m -1.85e-264)
a
(if (<= m 1800000000000.0) t_0 (* -10.0 (* k a)))))))
double code(double a, double k, double m) {
double t_0 = a / (k * k);
double tmp;
if (m <= -2.05e-107) {
tmp = t_0;
} else if (m <= -1.85e-264) {
tmp = a;
} else if (m <= 1800000000000.0) {
tmp = t_0;
} else {
tmp = -10.0 * (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) :: t_0
real(8) :: tmp
t_0 = a / (k * k)
if (m <= (-2.05d-107)) then
tmp = t_0
else if (m <= (-1.85d-264)) then
tmp = a
else if (m <= 1800000000000.0d0) then
tmp = t_0
else
tmp = (-10.0d0) * (k * a)
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double t_0 = a / (k * k);
double tmp;
if (m <= -2.05e-107) {
tmp = t_0;
} else if (m <= -1.85e-264) {
tmp = a;
} else if (m <= 1800000000000.0) {
tmp = t_0;
} else {
tmp = -10.0 * (k * a);
}
return tmp;
}
def code(a, k, m): t_0 = a / (k * k) tmp = 0 if m <= -2.05e-107: tmp = t_0 elif m <= -1.85e-264: tmp = a elif m <= 1800000000000.0: tmp = t_0 else: tmp = -10.0 * (k * a) return tmp
function code(a, k, m) t_0 = Float64(a / Float64(k * k)) tmp = 0.0 if (m <= -2.05e-107) tmp = t_0; elseif (m <= -1.85e-264) tmp = a; elseif (m <= 1800000000000.0) tmp = t_0; else tmp = Float64(-10.0 * Float64(k * a)); end return tmp end
function tmp_2 = code(a, k, m) t_0 = a / (k * k); tmp = 0.0; if (m <= -2.05e-107) tmp = t_0; elseif (m <= -1.85e-264) tmp = a; elseif (m <= 1800000000000.0) tmp = t_0; else tmp = -10.0 * (k * a); end tmp_2 = tmp; end
code[a_, k_, m_] := Block[{t$95$0 = N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[m, -2.05e-107], t$95$0, If[LessEqual[m, -1.85e-264], a, If[LessEqual[m, 1800000000000.0], t$95$0, N[(-10.0 * N[(k * a), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{k \cdot k}\\
\mathbf{if}\;m \leq -2.05 \cdot 10^{-107}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;m \leq -1.85 \cdot 10^{-264}:\\
\;\;\;\;a\\
\mathbf{elif}\;m \leq 1800000000000:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;-10 \cdot \left(k \cdot a\right)\\
\end{array}
\end{array}
if m < -2.05e-107 or -1.84999999999999998e-264 < m < 1.8e12Initial program 96.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-+.f6459.3
Simplified59.3%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6455.7
Simplified55.7%
if -2.05e-107 < m < -1.84999999999999998e-264Initial program 96.4%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6496.4
Simplified96.4%
Taylor expanded in k around 0
Simplified70.9%
if 1.8e12 < m Initial program 69.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-+.f642.8
Simplified2.8%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f649.6
Simplified9.6%
Taylor expanded in k around inf
*-lowering-*.f64N/A
*-lowering-*.f6423.2
Simplified23.2%
Final simplification46.2%
(FPCore (a k m)
:precision binary64
(if (<= m -0.23)
(/ a (* k k))
(if (<= m 5.8e-5)
(/ a (+ (* k (+ k 10.0)) 1.0))
(fma k (* a (fma 100.0 k -10.0)) a))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.23) {
tmp = a / (k * k);
} else if (m <= 5.8e-5) {
tmp = a / ((k * (k + 10.0)) + 1.0);
} else {
tmp = fma(k, (a * fma(100.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.23) tmp = Float64(a / Float64(k * k)); elseif (m <= 5.8e-5) tmp = Float64(a / Float64(Float64(k * Float64(k + 10.0)) + 1.0)); else tmp = fma(k, Float64(a * fma(100.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.23], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 5.8e-5], N[(a / N[(N[(k * N[(k + 10.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(100.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.23:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 5.8 \cdot 10^{-5}:\\
\;\;\;\;\frac{a}{k \cdot \left(k + 10\right) + 1}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(100, k, -10\right), a\right)\\
\end{array}
\end{array}
if m < -0.23000000000000001Initial program 100.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6436.5
Simplified36.5%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6457.9
Simplified57.9%
if -0.23000000000000001 < m < 5.8e-5Initial program 93.1%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6491.5
Simplified91.5%
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f6491.5
Applied egg-rr91.5%
if 5.8e-5 < m Initial program 70.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.2
Simplified3.2%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval3.2
Applied egg-rr3.2%
Taylor expanded in k around 0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6433.2
Simplified33.2%
(FPCore (a k m)
:precision binary64
(if (<= m -0.58)
(/ a (* k k))
(if (<= m 5.8e-5)
(/ a (fma k (+ k 10.0) 1.0))
(fma k (* a (fma 100.0 k -10.0)) a))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.58) {
tmp = a / (k * k);
} else if (m <= 5.8e-5) {
tmp = a / fma(k, (k + 10.0), 1.0);
} else {
tmp = fma(k, (a * fma(100.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.58) tmp = Float64(a / Float64(k * k)); elseif (m <= 5.8e-5) tmp = Float64(a / fma(k, Float64(k + 10.0), 1.0)); else tmp = fma(k, Float64(a * fma(100.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.58], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 5.8e-5], N[(a / N[(k * N[(k + 10.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(100.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.58:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 5.8 \cdot 10^{-5}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k + 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(100, k, -10\right), a\right)\\
\end{array}
\end{array}
if m < -0.57999999999999996Initial 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-+.f6436.5
Simplified36.5%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6457.9
Simplified57.9%
if -0.57999999999999996 < m < 5.8e-5Initial program 93.1%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6491.5
Simplified91.5%
if 5.8e-5 < m Initial program 70.0%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f643.2
Simplified3.2%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval3.2
Applied egg-rr3.2%
Taylor expanded in k around 0
Simplified3.0%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6433.2
Simplified33.2%
Final simplification60.9%
(FPCore (a k m) :precision binary64 (if (<= m -0.25) (/ a (* k k)) (if (<= m 4e-7) (/ a (fma k k 1.0)) (fma k (* a (fma 100.0 k -10.0)) a))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.25) {
tmp = a / (k * k);
} else if (m <= 4e-7) {
tmp = a / fma(k, k, 1.0);
} else {
tmp = fma(k, (a * fma(100.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.25) tmp = Float64(a / Float64(k * k)); elseif (m <= 4e-7) tmp = Float64(a / fma(k, k, 1.0)); else tmp = fma(k, Float64(a * fma(100.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.25], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 4e-7], N[(a / N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(100.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.25:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 4 \cdot 10^{-7}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(100, k, -10\right), a\right)\\
\end{array}
\end{array}
if m < -0.25Initial 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-+.f6436.5
Simplified36.5%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6457.9
Simplified57.9%
if -0.25 < m < 3.9999999999999998e-7Initial program 93.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-+.f6492.1
Simplified92.1%
Taylor expanded in k around inf
Simplified88.2%
if 3.9999999999999998e-7 < m Initial program 70.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.6
Simplified3.6%
+-commutativeN/A
flip-+N/A
div-invN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
metadata-eval3.6
Applied egg-rr3.6%
Taylor expanded in k around 0
Simplified3.4%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
associate-*r*N/A
distribute-rgt-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f6433.3
Simplified33.3%
(FPCore (a k m) :precision binary64 (if (<= m -0.55) (/ a (* k k)) (if (<= m 4e-7) (/ a (fma k k 1.0)) (fma k (* a (fma 99.0 k -10.0)) a))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.55) {
tmp = a / (k * k);
} else if (m <= 4e-7) {
tmp = a / fma(k, k, 1.0);
} else {
tmp = fma(k, (a * fma(99.0, k, -10.0)), a);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.55) tmp = Float64(a / Float64(k * k)); elseif (m <= 4e-7) tmp = Float64(a / fma(k, k, 1.0)); else tmp = fma(k, Float64(a * fma(99.0, k, -10.0)), a); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.55], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 4e-7], N[(a / N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision], N[(k * N[(a * N[(99.0 * k + -10.0), $MachinePrecision]), $MachinePrecision] + a), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.55:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 4 \cdot 10^{-7}:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(k, a \cdot \mathsf{fma}\left(99, k, -10\right), a\right)\\
\end{array}
\end{array}
if m < -0.55000000000000004Initial 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-+.f6436.5
Simplified36.5%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6457.9
Simplified57.9%
if -0.55000000000000004 < m < 3.9999999999999998e-7Initial program 93.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-+.f6492.1
Simplified92.1%
Taylor expanded in k around inf
Simplified88.2%
if 3.9999999999999998e-7 < m Initial program 70.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.6
Simplified3.6%
+-lowering-+.f64N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f643.6
Applied egg-rr3.6%
Taylor expanded in k around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
mul-1-negN/A
*-commutativeN/A
distribute-lft-neg-inN/A
distribute-neg-inN/A
mul-1-negN/A
sub-negN/A
distribute-rgt-out--N/A
associate-*l*N/A
*-commutativeN/A
distribute-lft-outN/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
metadata-eval33.3
Simplified33.3%
(FPCore (a k m) :precision binary64 (if (<= m -0.33) (/ a (* k k)) (if (<= m 1750000000000.0) (/ a (fma k k 1.0)) (* -10.0 (* k a)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -0.33) {
tmp = a / (k * k);
} else if (m <= 1750000000000.0) {
tmp = a / fma(k, k, 1.0);
} else {
tmp = -10.0 * (k * a);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -0.33) tmp = Float64(a / Float64(k * k)); elseif (m <= 1750000000000.0) tmp = Float64(a / fma(k, k, 1.0)); else tmp = Float64(-10.0 * Float64(k * a)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -0.33], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 1750000000000.0], N[(a / N[(k * k + 1.0), $MachinePrecision]), $MachinePrecision], N[(-10.0 * N[(k * a), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -0.33:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 1750000000000:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, k, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;-10 \cdot \left(k \cdot a\right)\\
\end{array}
\end{array}
if m < -0.330000000000000016Initial 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-+.f6436.5
Simplified36.5%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6457.9
Simplified57.9%
if -0.330000000000000016 < m < 1.75e12Initial program 93.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-+.f6488.9
Simplified88.9%
Taylor expanded in k around inf
Simplified85.2%
if 1.75e12 < m Initial program 69.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-+.f642.8
Simplified2.8%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f649.6
Simplified9.6%
Taylor expanded in k around inf
*-lowering-*.f64N/A
*-lowering-*.f6423.2
Simplified23.2%
Final simplification55.9%
(FPCore (a k m) :precision binary64 (if (<= m -6.5e-14) (/ a (* k k)) (if (<= m 1700000000000.0) (/ a (fma k 10.0 1.0)) (* -10.0 (* k a)))))
double code(double a, double k, double m) {
double tmp;
if (m <= -6.5e-14) {
tmp = a / (k * k);
} else if (m <= 1700000000000.0) {
tmp = a / fma(k, 10.0, 1.0);
} else {
tmp = -10.0 * (k * a);
}
return tmp;
}
function code(a, k, m) tmp = 0.0 if (m <= -6.5e-14) tmp = Float64(a / Float64(k * k)); elseif (m <= 1700000000000.0) tmp = Float64(a / fma(k, 10.0, 1.0)); else tmp = Float64(-10.0 * Float64(k * a)); end return tmp end
code[a_, k_, m_] := If[LessEqual[m, -6.5e-14], N[(a / N[(k * k), $MachinePrecision]), $MachinePrecision], If[LessEqual[m, 1700000000000.0], N[(a / N[(k * 10.0 + 1.0), $MachinePrecision]), $MachinePrecision], N[(-10.0 * N[(k * a), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq -6.5 \cdot 10^{-14}:\\
\;\;\;\;\frac{a}{k \cdot k}\\
\mathbf{elif}\;m \leq 1700000000000:\\
\;\;\;\;\frac{a}{\mathsf{fma}\left(k, 10, 1\right)}\\
\mathbf{else}:\\
\;\;\;\;-10 \cdot \left(k \cdot a\right)\\
\end{array}
\end{array}
if m < -6.5000000000000001e-14Initial 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-+.f6438.9
Simplified38.9%
Taylor expanded in k around inf
unpow2N/A
*-lowering-*.f6459.2
Simplified59.2%
if -6.5000000000000001e-14 < m < 1.7e12Initial program 93.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-+.f6489.1
Simplified89.1%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6462.0
Simplified62.0%
if 1.7e12 < m Initial program 69.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-+.f642.8
Simplified2.8%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f649.6
Simplified9.6%
Taylor expanded in k around inf
*-lowering-*.f64N/A
*-lowering-*.f6423.2
Simplified23.2%
Final simplification47.9%
(FPCore (a k m) :precision binary64 (if (<= m 1700000000000.0) a (* -10.0 (* k a))))
double code(double a, double k, double m) {
double tmp;
if (m <= 1700000000000.0) {
tmp = a;
} else {
tmp = -10.0 * (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 (m <= 1700000000000.0d0) then
tmp = a
else
tmp = (-10.0d0) * (k * a)
end if
code = tmp
end function
public static double code(double a, double k, double m) {
double tmp;
if (m <= 1700000000000.0) {
tmp = a;
} else {
tmp = -10.0 * (k * a);
}
return tmp;
}
def code(a, k, m): tmp = 0 if m <= 1700000000000.0: tmp = a else: tmp = -10.0 * (k * a) return tmp
function code(a, k, m) tmp = 0.0 if (m <= 1700000000000.0) tmp = a; else tmp = Float64(-10.0 * Float64(k * a)); end return tmp end
function tmp_2 = code(a, k, m) tmp = 0.0; if (m <= 1700000000000.0) tmp = a; else tmp = -10.0 * (k * a); end tmp_2 = tmp; end
code[a_, k_, m_] := If[LessEqual[m, 1700000000000.0], a, N[(-10.0 * N[(k * a), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;m \leq 1700000000000:\\
\;\;\;\;a\\
\mathbf{else}:\\
\;\;\;\;-10 \cdot \left(k \cdot a\right)\\
\end{array}
\end{array}
if m < 1.7e12Initial program 96.4%
Taylor expanded in m around 0
/-lowering-/.f64N/A
unpow2N/A
distribute-rgt-inN/A
+-commutativeN/A
metadata-evalN/A
lft-mult-inverseN/A
associate-*l*N/A
*-lft-identityN/A
distribute-rgt-inN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
+-commutativeN/A
distribute-rgt-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-lft-identityN/A
+-lowering-+.f6465.0
Simplified65.0%
Taylor expanded in k around 0
Simplified26.1%
if 1.7e12 < m Initial program 69.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-+.f642.8
Simplified2.8%
Taylor expanded in k around 0
+-commutativeN/A
*-commutativeN/A
associate-*l*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f649.6
Simplified9.6%
Taylor expanded in k around inf
*-lowering-*.f64N/A
*-lowering-*.f6423.2
Simplified23.2%
Final simplification25.1%
(FPCore (a k m) :precision binary64 a)
double code(double a, double k, double m) {
return a;
}
real(8) function code(a, k, m)
real(8), intent (in) :: a
real(8), intent (in) :: k
real(8), intent (in) :: m
code = a
end function
public static double code(double a, double k, double m) {
return a;
}
def code(a, k, m): return a
function code(a, k, m) return a end
function tmp = code(a, k, m) tmp = a; end
code[a_, k_, m_] := a
\begin{array}{l}
\\
a
\end{array}
Initial program 87.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.9
Simplified43.9%
Taylor expanded in k around 0
Simplified18.6%
herbie shell --seed 2024198
(FPCore (a k m)
:name "Falkner and Boettcher, Appendix A"
:precision binary64
(/ (* a (pow k m)) (+ (+ 1.0 (* 10.0 k)) (* k k))))