
(FPCore (x y z) :precision binary64 (exp (- (+ x (* y (log y))) z)))
double code(double x, double y, double z) {
return exp(((x + (y * log(y))) - z));
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = exp(((x + (y * log(y))) - z))
end function
public static double code(double x, double y, double z) {
return Math.exp(((x + (y * Math.log(y))) - z));
}
def code(x, y, z): return math.exp(((x + (y * math.log(y))) - z))
function code(x, y, z) return exp(Float64(Float64(x + Float64(y * log(y))) - z)) end
function tmp = code(x, y, z) tmp = exp(((x + (y * log(y))) - z)); end
code[x_, y_, z_] := N[Exp[N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
e^{\left(x + y \cdot \log y\right) - z}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 21 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z) :precision binary64 (exp (- (+ x (* y (log y))) z)))
double code(double x, double y, double z) {
return exp(((x + (y * log(y))) - z));
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = exp(((x + (y * log(y))) - z))
end function
public static double code(double x, double y, double z) {
return Math.exp(((x + (y * Math.log(y))) - z));
}
def code(x, y, z): return math.exp(((x + (y * math.log(y))) - z))
function code(x, y, z) return exp(Float64(Float64(x + Float64(y * log(y))) - z)) end
function tmp = code(x, y, z) tmp = exp(((x + (y * log(y))) - z)); end
code[x_, y_, z_] := N[Exp[N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
e^{\left(x + y \cdot \log y\right) - z}
\end{array}
(FPCore (x y z) :precision binary64 (exp (- (+ x (* y (log y))) z)))
double code(double x, double y, double z) {
return exp(((x + (y * log(y))) - z));
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = exp(((x + (y * log(y))) - z))
end function
public static double code(double x, double y, double z) {
return Math.exp(((x + (y * Math.log(y))) - z));
}
def code(x, y, z): return math.exp(((x + (y * math.log(y))) - z))
function code(x, y, z) return exp(Float64(Float64(x + Float64(y * log(y))) - z)) end
function tmp = code(x, y, z) tmp = exp(((x + (y * log(y))) - z)); end
code[x_, y_, z_] := N[Exp[N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
e^{\left(x + y \cdot \log y\right) - z}
\end{array}
Initial program 100.0%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (- (+ x (* y (log y))) z))
(t_1 (* z (* z z)))
(t_2 (fma z (fma z 0.5 -1.0) -1.0)))
(if (<= t_0 -1e+160)
(/ -1.0 t_2)
(if (<= t_0 -20000000000000.0)
(/ (* 0.25 (* z t_1)) t_2)
(if (<= t_0 100000000.0)
(fma
z
(fma
z
(*
(fma t_1 -0.004629629629629629 0.125)
(/
1.0
(+
0.25
(*
-0.16666666666666666
(* z (fma z -0.16666666666666666 -0.5))))))
-1.0)
1.0)
(fma
(* z (fma 0.25 (* z z) -1.0))
(/ (+ 2.0 (/ (- -4.0 (/ (+ (/ 16.0 z) -8.0) z)) z)) z)
1.0))))))
double code(double x, double y, double z) {
double t_0 = (x + (y * log(y))) - z;
double t_1 = z * (z * z);
double t_2 = fma(z, fma(z, 0.5, -1.0), -1.0);
double tmp;
if (t_0 <= -1e+160) {
tmp = -1.0 / t_2;
} else if (t_0 <= -20000000000000.0) {
tmp = (0.25 * (z * t_1)) / t_2;
} else if (t_0 <= 100000000.0) {
tmp = fma(z, fma(z, (fma(t_1, -0.004629629629629629, 0.125) * (1.0 / (0.25 + (-0.16666666666666666 * (z * fma(z, -0.16666666666666666, -0.5)))))), -1.0), 1.0);
} else {
tmp = fma((z * fma(0.25, (z * z), -1.0)), ((2.0 + ((-4.0 - (((16.0 / z) + -8.0) / z)) / z)) / z), 1.0);
}
return tmp;
}
function code(x, y, z) t_0 = Float64(Float64(x + Float64(y * log(y))) - z) t_1 = Float64(z * Float64(z * z)) t_2 = fma(z, fma(z, 0.5, -1.0), -1.0) tmp = 0.0 if (t_0 <= -1e+160) tmp = Float64(-1.0 / t_2); elseif (t_0 <= -20000000000000.0) tmp = Float64(Float64(0.25 * Float64(z * t_1)) / t_2); elseif (t_0 <= 100000000.0) tmp = fma(z, fma(z, Float64(fma(t_1, -0.004629629629629629, 0.125) * Float64(1.0 / Float64(0.25 + Float64(-0.16666666666666666 * Float64(z * fma(z, -0.16666666666666666, -0.5)))))), -1.0), 1.0); else tmp = fma(Float64(z * fma(0.25, Float64(z * z), -1.0)), Float64(Float64(2.0 + Float64(Float64(-4.0 - Float64(Float64(Float64(16.0 / z) + -8.0) / z)) / z)) / z), 1.0); end return tmp end
code[x_, y_, z_] := Block[{t$95$0 = N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]}, Block[{t$95$1 = N[(z * N[(z * z), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(z * N[(z * 0.5 + -1.0), $MachinePrecision] + -1.0), $MachinePrecision]}, If[LessEqual[t$95$0, -1e+160], N[(-1.0 / t$95$2), $MachinePrecision], If[LessEqual[t$95$0, -20000000000000.0], N[(N[(0.25 * N[(z * t$95$1), $MachinePrecision]), $MachinePrecision] / t$95$2), $MachinePrecision], If[LessEqual[t$95$0, 100000000.0], N[(z * N[(z * N[(N[(t$95$1 * -0.004629629629629629 + 0.125), $MachinePrecision] * N[(1.0 / N[(0.25 + N[(-0.16666666666666666 * N[(z * N[(z * -0.16666666666666666 + -0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision] + 1.0), $MachinePrecision], N[(N[(z * N[(0.25 * N[(z * z), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision] * N[(N[(2.0 + N[(N[(-4.0 - N[(N[(N[(16.0 / z), $MachinePrecision] + -8.0), $MachinePrecision] / z), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision] + 1.0), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(x + y \cdot \log y\right) - z\\
t_1 := z \cdot \left(z \cdot z\right)\\
t_2 := \mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.5, -1\right), -1\right)\\
\mathbf{if}\;t\_0 \leq -1 \cdot 10^{+160}:\\
\;\;\;\;\frac{-1}{t\_2}\\
\mathbf{elif}\;t\_0 \leq -20000000000000:\\
\;\;\;\;\frac{0.25 \cdot \left(z \cdot t\_1\right)}{t\_2}\\
\mathbf{elif}\;t\_0 \leq 100000000:\\
\;\;\;\;\mathsf{fma}\left(z, \mathsf{fma}\left(z, \mathsf{fma}\left(t\_1, -0.004629629629629629, 0.125\right) \cdot \frac{1}{0.25 + -0.16666666666666666 \cdot \left(z \cdot \mathsf{fma}\left(z, -0.16666666666666666, -0.5\right)\right)}, -1\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z \cdot \mathsf{fma}\left(0.25, z \cdot z, -1\right), \frac{2 + \frac{-4 - \frac{\frac{16}{z} + -8}{z}}{z}}{z}, 1\right)\\
\end{array}
\end{array}
if (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < -1.00000000000000001e160Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6460.7
Simplified60.7%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f642.2
Simplified2.2%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr1.4%
Taylor expanded in z around 0
Simplified51.1%
if -1.00000000000000001e160 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < -2e13Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6441.0
Simplified41.0%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f642.7
Simplified2.7%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr2.7%
Taylor expanded in z around inf
*-lowering-*.f64N/A
metadata-evalN/A
pow-plusN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6457.4
Simplified57.4%
if -2e13 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 1e8Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6492.5
Simplified92.5%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6489.6
Simplified89.6%
+-commutativeN/A
flip3-+N/A
+-commutativeN/A
div-invN/A
*-lowering-*.f64N/A
unpow-prod-downN/A
accelerator-lowering-fma.f64N/A
cube-multN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
+-lowering-+.f64N/A
metadata-evalN/A
Applied egg-rr89.6%
if 1e8 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6439.9
Simplified39.9%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6421.9
Simplified21.9%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
sub-negN/A
swap-sqrN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f6430.5
Applied egg-rr30.5%
Taylor expanded in z around inf
Simplified51.6%
Final simplification57.5%
(FPCore (x y z) :precision binary64 (let* ((t_0 (+ x (* y (log y))))) (if (<= t_0 -0.2) (exp x) (if (<= t_0 5e+29) (exp (- 0.0 z)) (pow y y)))))
double code(double x, double y, double z) {
double t_0 = x + (y * log(y));
double tmp;
if (t_0 <= -0.2) {
tmp = exp(x);
} else if (t_0 <= 5e+29) {
tmp = exp((0.0 - z));
} else {
tmp = pow(y, y);
}
return tmp;
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8) :: t_0
real(8) :: tmp
t_0 = x + (y * log(y))
if (t_0 <= (-0.2d0)) then
tmp = exp(x)
else if (t_0 <= 5d+29) then
tmp = exp((0.0d0 - z))
else
tmp = y ** y
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = x + (y * Math.log(y));
double tmp;
if (t_0 <= -0.2) {
tmp = Math.exp(x);
} else if (t_0 <= 5e+29) {
tmp = Math.exp((0.0 - z));
} else {
tmp = Math.pow(y, y);
}
return tmp;
}
def code(x, y, z): t_0 = x + (y * math.log(y)) tmp = 0 if t_0 <= -0.2: tmp = math.exp(x) elif t_0 <= 5e+29: tmp = math.exp((0.0 - z)) else: tmp = math.pow(y, y) return tmp
function code(x, y, z) t_0 = Float64(x + Float64(y * log(y))) tmp = 0.0 if (t_0 <= -0.2) tmp = exp(x); elseif (t_0 <= 5e+29) tmp = exp(Float64(0.0 - z)); else tmp = y ^ y; end return tmp end
function tmp_2 = code(x, y, z) t_0 = x + (y * log(y)); tmp = 0.0; if (t_0 <= -0.2) tmp = exp(x); elseif (t_0 <= 5e+29) tmp = exp((0.0 - z)); else tmp = y ^ y; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -0.2], N[Exp[x], $MachinePrecision], If[LessEqual[t$95$0, 5e+29], N[Exp[N[(0.0 - z), $MachinePrecision]], $MachinePrecision], N[Power[y, y], $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x + y \cdot \log y\\
\mathbf{if}\;t\_0 \leq -0.2:\\
\;\;\;\;e^{x}\\
\mathbf{elif}\;t\_0 \leq 5 \cdot 10^{+29}:\\
\;\;\;\;e^{0 - z}\\
\mathbf{else}:\\
\;\;\;\;{y}^{y}\\
\end{array}
\end{array}
if (+.f64 x (*.f64 y (log.f64 y))) < -0.20000000000000001Initial program 100.0%
Taylor expanded in x around inf
Simplified93.0%
if -0.20000000000000001 < (+.f64 x (*.f64 y (log.f64 y))) < 5.0000000000000001e29Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6494.8
Simplified94.8%
sub0-negN/A
neg-lowering-neg.f6494.8
Applied egg-rr94.8%
if 5.0000000000000001e29 < (+.f64 x (*.f64 y (log.f64 y))) Initial program 100.0%
Taylor expanded in z around 0
exp-lowering-exp.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
log-lowering-log.f6492.2
Simplified92.2%
Taylor expanded in x around 0
pow-lowering-pow.f6468.6
Simplified68.6%
Final simplification81.4%
(FPCore (x y z) :precision binary64 (let* ((t_0 (- (+ x (* y (log y))) z)) (t_1 (fma 0.5 (* z z) 0.0))) (if (<= t_0 -1e+20) t_1 (if (<= t_0 5e+72) (- 1.0 z) t_1))))
double code(double x, double y, double z) {
double t_0 = (x + (y * log(y))) - z;
double t_1 = fma(0.5, (z * z), 0.0);
double tmp;
if (t_0 <= -1e+20) {
tmp = t_1;
} else if (t_0 <= 5e+72) {
tmp = 1.0 - z;
} else {
tmp = t_1;
}
return tmp;
}
function code(x, y, z) t_0 = Float64(Float64(x + Float64(y * log(y))) - z) t_1 = fma(0.5, Float64(z * z), 0.0) tmp = 0.0 if (t_0 <= -1e+20) tmp = t_1; elseif (t_0 <= 5e+72) tmp = Float64(1.0 - z); else tmp = t_1; end return tmp end
code[x_, y_, z_] := Block[{t$95$0 = N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]}, Block[{t$95$1 = N[(0.5 * N[(z * z), $MachinePrecision] + 0.0), $MachinePrecision]}, If[LessEqual[t$95$0, -1e+20], t$95$1, If[LessEqual[t$95$0, 5e+72], N[(1.0 - z), $MachinePrecision], t$95$1]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(x + y \cdot \log y\right) - z\\
t_1 := \mathsf{fma}\left(0.5, z \cdot z, 0\right)\\
\mathbf{if}\;t\_0 \leq -1 \cdot 10^{+20}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t\_0 \leq 5 \cdot 10^{+72}:\\
\;\;\;\;1 - z\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < -1e20 or 4.99999999999999992e72 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6447.3
Simplified47.3%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6415.7
Simplified15.7%
Taylor expanded in z around inf
+-rgt-identityN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f6423.8
Simplified23.8%
if -1e20 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 4.99999999999999992e72Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6471.0
Simplified71.0%
Taylor expanded in z around 0
neg-mul-1N/A
unsub-negN/A
--lowering--.f6462.8
Simplified62.8%
(FPCore (x y z) :precision binary64 (let* ((t_0 (exp (- 0.0 z)))) (if (<= z -1.85e+72) t_0 (if (<= z 5.8e+98) (exp (fma y (log y) x)) t_0))))
double code(double x, double y, double z) {
double t_0 = exp((0.0 - z));
double tmp;
if (z <= -1.85e+72) {
tmp = t_0;
} else if (z <= 5.8e+98) {
tmp = exp(fma(y, log(y), x));
} else {
tmp = t_0;
}
return tmp;
}
function code(x, y, z) t_0 = exp(Float64(0.0 - z)) tmp = 0.0 if (z <= -1.85e+72) tmp = t_0; elseif (z <= 5.8e+98) tmp = exp(fma(y, log(y), x)); else tmp = t_0; end return tmp end
code[x_, y_, z_] := Block[{t$95$0 = N[Exp[N[(0.0 - z), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[z, -1.85e+72], t$95$0, If[LessEqual[z, 5.8e+98], N[Exp[N[(y * N[Log[y], $MachinePrecision] + x), $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := e^{0 - z}\\
\mathbf{if}\;z \leq -1.85 \cdot 10^{+72}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z \leq 5.8 \cdot 10^{+98}:\\
\;\;\;\;e^{\mathsf{fma}\left(y, \log y, x\right)}\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if z < -1.8500000000000001e72 or 5.8000000000000002e98 < z Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6491.7
Simplified91.7%
sub0-negN/A
neg-lowering-neg.f6491.7
Applied egg-rr91.7%
if -1.8500000000000001e72 < z < 5.8000000000000002e98Initial program 100.0%
Taylor expanded in z around 0
exp-lowering-exp.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
log-lowering-log.f6495.7
Simplified95.7%
Final simplification94.4%
(FPCore (x y z) :precision binary64 (if (<= (- (+ x (* y (log y))) z) 8e+109) 1.0 (* z (fma 0.5 z -1.0))))
double code(double x, double y, double z) {
double tmp;
if (((x + (y * log(y))) - z) <= 8e+109) {
tmp = 1.0;
} else {
tmp = z * fma(0.5, z, -1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (Float64(Float64(x + Float64(y * log(y))) - z) <= 8e+109) tmp = 1.0; else tmp = Float64(z * fma(0.5, z, -1.0)); end return tmp end
code[x_, y_, z_] := If[LessEqual[N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision], 8e+109], 1.0, N[(z * N[(0.5 * z + -1.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\left(x + y \cdot \log y\right) - z \leq 8 \cdot 10^{+109}:\\
\;\;\;\;1\\
\mathbf{else}:\\
\;\;\;\;z \cdot \mathsf{fma}\left(0.5, z, -1\right)\\
\end{array}
\end{array}
if (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 7.99999999999999985e109Initial program 100.0%
Taylor expanded in x around inf
Simplified63.8%
Taylor expanded in x around 0
Simplified24.2%
if 7.99999999999999985e109 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6445.5
Simplified45.5%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6427.4
Simplified27.4%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
sub-negN/A
swap-sqrN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f6437.7
Applied egg-rr37.7%
Taylor expanded in z around inf
sub-negN/A
distribute-rgt-inN/A
unpow2N/A
associate-*r*N/A
distribute-lft-neg-outN/A
lft-mult-inverseN/A
cancel-sign-sub-invN/A
unpow2N/A
associate-*r*N/A
distribute-rgt-out--N/A
*-lowering-*.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6426.8
Simplified26.8%
(FPCore (x y z) :precision binary64 (if (<= (+ x (* y (log y))) -5e-9) (fma 0.5 (* z z) 0.0) (fma x (fma x 0.5 1.0) 1.0)))
double code(double x, double y, double z) {
double tmp;
if ((x + (y * log(y))) <= -5e-9) {
tmp = fma(0.5, (z * z), 0.0);
} else {
tmp = fma(x, fma(x, 0.5, 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (Float64(x + Float64(y * log(y))) <= -5e-9) tmp = fma(0.5, Float64(z * z), 0.0); else tmp = fma(x, fma(x, 0.5, 1.0), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], -5e-9], N[(0.5 * N[(z * z), $MachinePrecision] + 0.0), $MachinePrecision], N[(x * N[(x * 0.5 + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x + y \cdot \log y \leq -5 \cdot 10^{-9}:\\
\;\;\;\;\mathsf{fma}\left(0.5, z \cdot z, 0\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.5, 1\right), 1\right)\\
\end{array}
\end{array}
if (+.f64 x (*.f64 y (log.f64 y))) < -5.0000000000000001e-9Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6434.3
Simplified34.3%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6410.1
Simplified10.1%
Taylor expanded in z around inf
+-rgt-identityN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f6440.7
Simplified40.7%
if -5.0000000000000001e-9 < (+.f64 x (*.f64 y (log.f64 y))) Initial program 100.0%
Taylor expanded in x around inf
Simplified46.7%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6438.4
Simplified38.4%
(FPCore (x y z) :precision binary64 (if (<= z -1.6e+75) (/ (fma (fma z 0.5 -1.0) (* z (* z (fma z 0.5 -1.0))) -1.0) (- -1.0 z)) (if (<= z 4.2e+162) (exp x) (/ -1.0 (fma z (fma z 0.5 -1.0) -1.0)))))
double code(double x, double y, double z) {
double tmp;
if (z <= -1.6e+75) {
tmp = fma(fma(z, 0.5, -1.0), (z * (z * fma(z, 0.5, -1.0))), -1.0) / (-1.0 - z);
} else if (z <= 4.2e+162) {
tmp = exp(x);
} else {
tmp = -1.0 / fma(z, fma(z, 0.5, -1.0), -1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (z <= -1.6e+75) tmp = Float64(fma(fma(z, 0.5, -1.0), Float64(z * Float64(z * fma(z, 0.5, -1.0))), -1.0) / Float64(-1.0 - z)); elseif (z <= 4.2e+162) tmp = exp(x); else tmp = Float64(-1.0 / fma(z, fma(z, 0.5, -1.0), -1.0)); end return tmp end
code[x_, y_, z_] := If[LessEqual[z, -1.6e+75], N[(N[(N[(z * 0.5 + -1.0), $MachinePrecision] * N[(z * N[(z * N[(z * 0.5 + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision] / N[(-1.0 - z), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 4.2e+162], N[Exp[x], $MachinePrecision], N[(-1.0 / N[(z * N[(z * 0.5 + -1.0), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -1.6 \cdot 10^{+75}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(z, 0.5, -1\right), z \cdot \left(z \cdot \mathsf{fma}\left(z, 0.5, -1\right)\right), -1\right)}{-1 - z}\\
\mathbf{elif}\;z \leq 4.2 \cdot 10^{+162}:\\
\;\;\;\;e^{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.5, -1\right), -1\right)}\\
\end{array}
\end{array}
if z < -1.59999999999999992e75Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6497.6
Simplified97.6%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6454.2
Simplified54.2%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr44.0%
Taylor expanded in z around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f6495.3
Simplified95.3%
if -1.59999999999999992e75 < z < 4.2000000000000001e162Initial program 100.0%
Taylor expanded in x around inf
Simplified67.2%
if 4.2000000000000001e162 < z Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6490.2
Simplified90.2%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6411.4
Simplified11.4%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr0.0%
Taylor expanded in z around 0
Simplified90.2%
(FPCore (x y z) :precision binary64 (if (<= y 4.2e+23) (exp x) (pow y y)))
double code(double x, double y, double z) {
double tmp;
if (y <= 4.2e+23) {
tmp = exp(x);
} else {
tmp = pow(y, y);
}
return tmp;
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8) :: tmp
if (y <= 4.2d+23) then
tmp = exp(x)
else
tmp = y ** y
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if (y <= 4.2e+23) {
tmp = Math.exp(x);
} else {
tmp = Math.pow(y, y);
}
return tmp;
}
def code(x, y, z): tmp = 0 if y <= 4.2e+23: tmp = math.exp(x) else: tmp = math.pow(y, y) return tmp
function code(x, y, z) tmp = 0.0 if (y <= 4.2e+23) tmp = exp(x); else tmp = y ^ y; end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if (y <= 4.2e+23) tmp = exp(x); else tmp = y ^ y; end tmp_2 = tmp; end
code[x_, y_, z_] := If[LessEqual[y, 4.2e+23], N[Exp[x], $MachinePrecision], N[Power[y, y], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y \leq 4.2 \cdot 10^{+23}:\\
\;\;\;\;e^{x}\\
\mathbf{else}:\\
\;\;\;\;{y}^{y}\\
\end{array}
\end{array}
if y < 4.2000000000000003e23Initial program 100.0%
Taylor expanded in x around inf
Simplified71.0%
if 4.2000000000000003e23 < y Initial program 100.0%
Taylor expanded in z around 0
exp-lowering-exp.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
log-lowering-log.f6491.1
Simplified91.1%
Taylor expanded in x around 0
pow-lowering-pow.f6479.4
Simplified79.4%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (fma x (fma x (fma x 0.16666666666666666 0.5) 1.0) 1.0)))
(if (<= z -1.6e+75)
(/ (fma (fma z 0.5 -1.0) (* z (* z (fma z 0.5 -1.0))) -1.0) (- -1.0 z))
(if (<= z 1.5e-308)
t_0
(if (<= z 5.6e-170)
(fma (* z (fma 0.25 (* z z) -1.0)) (/ (+ 2.0 (/ -4.0 z)) z) 1.0)
(if (<= z 4.2e+162) t_0 (/ -1.0 (fma z (fma z 0.5 -1.0) -1.0))))))))
double code(double x, double y, double z) {
double t_0 = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0);
double tmp;
if (z <= -1.6e+75) {
tmp = fma(fma(z, 0.5, -1.0), (z * (z * fma(z, 0.5, -1.0))), -1.0) / (-1.0 - z);
} else if (z <= 1.5e-308) {
tmp = t_0;
} else if (z <= 5.6e-170) {
tmp = fma((z * fma(0.25, (z * z), -1.0)), ((2.0 + (-4.0 / z)) / z), 1.0);
} else if (z <= 4.2e+162) {
tmp = t_0;
} else {
tmp = -1.0 / fma(z, fma(z, 0.5, -1.0), -1.0);
}
return tmp;
}
function code(x, y, z) t_0 = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0) tmp = 0.0 if (z <= -1.6e+75) tmp = Float64(fma(fma(z, 0.5, -1.0), Float64(z * Float64(z * fma(z, 0.5, -1.0))), -1.0) / Float64(-1.0 - z)); elseif (z <= 1.5e-308) tmp = t_0; elseif (z <= 5.6e-170) tmp = fma(Float64(z * fma(0.25, Float64(z * z), -1.0)), Float64(Float64(2.0 + Float64(-4.0 / z)) / z), 1.0); elseif (z <= 4.2e+162) tmp = t_0; else tmp = Float64(-1.0 / fma(z, fma(z, 0.5, -1.0), -1.0)); end return tmp end
code[x_, y_, z_] := Block[{t$95$0 = N[(x * N[(x * N[(x * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]}, If[LessEqual[z, -1.6e+75], N[(N[(N[(z * 0.5 + -1.0), $MachinePrecision] * N[(z * N[(z * N[(z * 0.5 + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision] / N[(-1.0 - z), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 1.5e-308], t$95$0, If[LessEqual[z, 5.6e-170], N[(N[(z * N[(0.25 * N[(z * z), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision] * N[(N[(2.0 + N[(-4.0 / z), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision] + 1.0), $MachinePrecision], If[LessEqual[z, 4.2e+162], t$95$0, N[(-1.0 / N[(z * N[(z * 0.5 + -1.0), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{fma}\left(x, \mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.16666666666666666, 0.5\right), 1\right), 1\right)\\
\mathbf{if}\;z \leq -1.6 \cdot 10^{+75}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(z, 0.5, -1\right), z \cdot \left(z \cdot \mathsf{fma}\left(z, 0.5, -1\right)\right), -1\right)}{-1 - z}\\
\mathbf{elif}\;z \leq 1.5 \cdot 10^{-308}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z \leq 5.6 \cdot 10^{-170}:\\
\;\;\;\;\mathsf{fma}\left(z \cdot \mathsf{fma}\left(0.25, z \cdot z, -1\right), \frac{2 + \frac{-4}{z}}{z}, 1\right)\\
\mathbf{elif}\;z \leq 4.2 \cdot 10^{+162}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.5, -1\right), -1\right)}\\
\end{array}
\end{array}
if z < -1.59999999999999992e75Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6497.6
Simplified97.6%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6454.2
Simplified54.2%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr44.0%
Taylor expanded in z around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f6495.3
Simplified95.3%
if -1.59999999999999992e75 < z < 1.4999999999999999e-308 or 5.59999999999999991e-170 < z < 4.2000000000000001e162Initial program 100.0%
Taylor expanded in x around inf
Simplified67.5%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6439.7
Simplified39.7%
if 1.4999999999999999e-308 < z < 5.59999999999999991e-170Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6420.2
Simplified20.2%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6420.2
Simplified20.2%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
sub-negN/A
swap-sqrN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f6420.2
Applied egg-rr20.2%
Taylor expanded in z around inf
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
metadata-eval53.7
Simplified53.7%
if 4.2000000000000001e162 < z Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6490.2
Simplified90.2%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6411.4
Simplified11.4%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr0.0%
Taylor expanded in z around 0
Simplified90.2%
Final simplification56.6%
(FPCore (x y z)
:precision binary64
(if (<= x -2600.0)
(/ 1.0 (/ 1.0 (fma z (* (* z z) -0.16666666666666666) 0.0)))
(if (<= x 1.1e-192)
(fma (* z (fma 0.25 (* z z) -1.0)) (/ 1.0 (fma z 0.5 1.0)) 1.0)
(if (<= x 1.1e+93)
(/ -1.0 (fma z (fma z 0.5 -1.0) -1.0))
(fma x (fma x (fma x 0.16666666666666666 0.5) 1.0) 1.0)))))
double code(double x, double y, double z) {
double tmp;
if (x <= -2600.0) {
tmp = 1.0 / (1.0 / fma(z, ((z * z) * -0.16666666666666666), 0.0));
} else if (x <= 1.1e-192) {
tmp = fma((z * fma(0.25, (z * z), -1.0)), (1.0 / fma(z, 0.5, 1.0)), 1.0);
} else if (x <= 1.1e+93) {
tmp = -1.0 / fma(z, fma(z, 0.5, -1.0), -1.0);
} else {
tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (x <= -2600.0) tmp = Float64(1.0 / Float64(1.0 / fma(z, Float64(Float64(z * z) * -0.16666666666666666), 0.0))); elseif (x <= 1.1e-192) tmp = fma(Float64(z * fma(0.25, Float64(z * z), -1.0)), Float64(1.0 / fma(z, 0.5, 1.0)), 1.0); elseif (x <= 1.1e+93) tmp = Float64(-1.0 / fma(z, fma(z, 0.5, -1.0), -1.0)); else tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[x, -2600.0], N[(1.0 / N[(1.0 / N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision] + 0.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 1.1e-192], N[(N[(z * N[(0.25 * N[(z * z), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision] * N[(1.0 / N[(z * 0.5 + 1.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision], If[LessEqual[x, 1.1e+93], N[(-1.0 / N[(z * N[(z * 0.5 + -1.0), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision], N[(x * N[(x * N[(x * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -2600:\\
\;\;\;\;\frac{1}{\frac{1}{\mathsf{fma}\left(z, \left(z \cdot z\right) \cdot -0.16666666666666666, 0\right)}}\\
\mathbf{elif}\;x \leq 1.1 \cdot 10^{-192}:\\
\;\;\;\;\mathsf{fma}\left(z \cdot \mathsf{fma}\left(0.25, z \cdot z, -1\right), \frac{1}{\mathsf{fma}\left(z, 0.5, 1\right)}, 1\right)\\
\mathbf{elif}\;x \leq 1.1 \cdot 10^{+93}:\\
\;\;\;\;\frac{-1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.5, -1\right), -1\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.16666666666666666, 0.5\right), 1\right), 1\right)\\
\end{array}
\end{array}
if x < -2600Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6440.5
Simplified40.5%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6414.4
Simplified14.4%
Taylor expanded in z around inf
metadata-evalN/A
distribute-lft-neg-inN/A
*-commutativeN/A
+-rgt-identityN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.6
Simplified49.6%
flip3-+N/A
clear-numN/A
metadata-evalN/A
sub0-negN/A
mul0-rgtN/A
sub-negN/A
--rgt-identityN/A
pow2N/A
metadata-evalN/A
+-rgt-identityN/A
pow-divN/A
Applied egg-rr50.7%
if -2600 < x < 1.10000000000000003e-192Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6461.8
Simplified61.8%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6434.5
Simplified34.5%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
sub-negN/A
swap-sqrN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
sub-negN/A
*-commutativeN/A
metadata-evalN/A
accelerator-lowering-fma.f6441.6
Applied egg-rr41.6%
if 1.10000000000000003e-192 < x < 1.10000000000000011e93Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6468.1
Simplified68.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6437.7
Simplified37.7%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr31.0%
Taylor expanded in z around 0
Simplified48.9%
if 1.10000000000000011e93 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified96.0%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6488.5
Simplified88.5%
Final simplification54.4%
(FPCore (x y z)
:precision binary64
(if (<= z -1.6e+75)
(/ (fma (fma z 0.5 -1.0) (* z (* z (fma z 0.5 -1.0))) -1.0) (- -1.0 z))
(if (<= z 4.2e+162)
(fma x (fma x (fma x 0.16666666666666666 0.5) 1.0) 1.0)
(/ -1.0 (fma z (fma z 0.5 -1.0) -1.0)))))
double code(double x, double y, double z) {
double tmp;
if (z <= -1.6e+75) {
tmp = fma(fma(z, 0.5, -1.0), (z * (z * fma(z, 0.5, -1.0))), -1.0) / (-1.0 - z);
} else if (z <= 4.2e+162) {
tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0);
} else {
tmp = -1.0 / fma(z, fma(z, 0.5, -1.0), -1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (z <= -1.6e+75) tmp = Float64(fma(fma(z, 0.5, -1.0), Float64(z * Float64(z * fma(z, 0.5, -1.0))), -1.0) / Float64(-1.0 - z)); elseif (z <= 4.2e+162) tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0); else tmp = Float64(-1.0 / fma(z, fma(z, 0.5, -1.0), -1.0)); end return tmp end
code[x_, y_, z_] := If[LessEqual[z, -1.6e+75], N[(N[(N[(z * 0.5 + -1.0), $MachinePrecision] * N[(z * N[(z * N[(z * 0.5 + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + -1.0), $MachinePrecision] / N[(-1.0 - z), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 4.2e+162], N[(x * N[(x * N[(x * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision], N[(-1.0 / N[(z * N[(z * 0.5 + -1.0), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -1.6 \cdot 10^{+75}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(z, 0.5, -1\right), z \cdot \left(z \cdot \mathsf{fma}\left(z, 0.5, -1\right)\right), -1\right)}{-1 - z}\\
\mathbf{elif}\;z \leq 4.2 \cdot 10^{+162}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.16666666666666666, 0.5\right), 1\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.5, -1\right), -1\right)}\\
\end{array}
\end{array}
if z < -1.59999999999999992e75Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6497.6
Simplified97.6%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6454.2
Simplified54.2%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr44.0%
Taylor expanded in z around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
mul-1-negN/A
unsub-negN/A
--lowering--.f6495.3
Simplified95.3%
if -1.59999999999999992e75 < z < 4.2000000000000001e162Initial program 100.0%
Taylor expanded in x around inf
Simplified67.2%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6437.7
Simplified37.7%
if 4.2000000000000001e162 < z Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6490.2
Simplified90.2%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6411.4
Simplified11.4%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr0.0%
Taylor expanded in z around 0
Simplified90.2%
(FPCore (x y z)
:precision binary64
(if (<= x -550.0)
(/ 1.0 (/ 1.0 (fma z (* (* z z) -0.16666666666666666) 0.0)))
(if (<= x 2.3e-189)
(fma z (* z (fma z -0.16666666666666666 0.5)) 1.0)
(if (<= x 9e+92)
(/ -1.0 (fma z (fma z 0.5 -1.0) -1.0))
(fma x (fma x (fma x 0.16666666666666666 0.5) 1.0) 1.0)))))
double code(double x, double y, double z) {
double tmp;
if (x <= -550.0) {
tmp = 1.0 / (1.0 / fma(z, ((z * z) * -0.16666666666666666), 0.0));
} else if (x <= 2.3e-189) {
tmp = fma(z, (z * fma(z, -0.16666666666666666, 0.5)), 1.0);
} else if (x <= 9e+92) {
tmp = -1.0 / fma(z, fma(z, 0.5, -1.0), -1.0);
} else {
tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (x <= -550.0) tmp = Float64(1.0 / Float64(1.0 / fma(z, Float64(Float64(z * z) * -0.16666666666666666), 0.0))); elseif (x <= 2.3e-189) tmp = fma(z, Float64(z * fma(z, -0.16666666666666666, 0.5)), 1.0); elseif (x <= 9e+92) tmp = Float64(-1.0 / fma(z, fma(z, 0.5, -1.0), -1.0)); else tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[x, -550.0], N[(1.0 / N[(1.0 / N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision] + 0.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 2.3e-189], N[(z * N[(z * N[(z * -0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision], If[LessEqual[x, 9e+92], N[(-1.0 / N[(z * N[(z * 0.5 + -1.0), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision], N[(x * N[(x * N[(x * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -550:\\
\;\;\;\;\frac{1}{\frac{1}{\mathsf{fma}\left(z, \left(z \cdot z\right) \cdot -0.16666666666666666, 0\right)}}\\
\mathbf{elif}\;x \leq 2.3 \cdot 10^{-189}:\\
\;\;\;\;\mathsf{fma}\left(z, z \cdot \mathsf{fma}\left(z, -0.16666666666666666, 0.5\right), 1\right)\\
\mathbf{elif}\;x \leq 9 \cdot 10^{+92}:\\
\;\;\;\;\frac{-1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.5, -1\right), -1\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.16666666666666666, 0.5\right), 1\right), 1\right)\\
\end{array}
\end{array}
if x < -550Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6440.5
Simplified40.5%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6414.4
Simplified14.4%
Taylor expanded in z around inf
metadata-evalN/A
distribute-lft-neg-inN/A
*-commutativeN/A
+-rgt-identityN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.6
Simplified49.6%
flip3-+N/A
clear-numN/A
metadata-evalN/A
sub0-negN/A
mul0-rgtN/A
sub-negN/A
--rgt-identityN/A
pow2N/A
metadata-evalN/A
+-rgt-identityN/A
pow-divN/A
Applied egg-rr50.7%
if -550 < x < 2.2999999999999998e-189Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6461.8
Simplified61.8%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6439.3
Simplified39.3%
Taylor expanded in z around inf
sub-negN/A
remove-double-negN/A
distribute-neg-inN/A
+-commutativeN/A
sub-negN/A
distribute-rgt-neg-inN/A
unpow2N/A
associate-*l*N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
associate-*r*N/A
sub-negN/A
distribute-rgt-inN/A
distribute-rgt-neg-inN/A
associate-*l*N/A
Simplified39.3%
if 2.2999999999999998e-189 < x < 8.9999999999999998e92Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6468.1
Simplified68.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6437.7
Simplified37.7%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr31.0%
Taylor expanded in z around 0
Simplified48.9%
if 8.9999999999999998e92 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified96.0%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6488.5
Simplified88.5%
(FPCore (x y z)
:precision binary64
(if (<= x -480.0)
(* z (* (* z z) -0.16666666666666666))
(if (<= x 2.8e-187)
(fma z (* z (fma z -0.16666666666666666 0.5)) 1.0)
(if (<= x 1.4e+88)
(/ -1.0 (fma z (fma z 0.5 -1.0) -1.0))
(fma x (fma x (fma x 0.16666666666666666 0.5) 1.0) 1.0)))))
double code(double x, double y, double z) {
double tmp;
if (x <= -480.0) {
tmp = z * ((z * z) * -0.16666666666666666);
} else if (x <= 2.8e-187) {
tmp = fma(z, (z * fma(z, -0.16666666666666666, 0.5)), 1.0);
} else if (x <= 1.4e+88) {
tmp = -1.0 / fma(z, fma(z, 0.5, -1.0), -1.0);
} else {
tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (x <= -480.0) tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666)); elseif (x <= 2.8e-187) tmp = fma(z, Float64(z * fma(z, -0.16666666666666666, 0.5)), 1.0); elseif (x <= 1.4e+88) tmp = Float64(-1.0 / fma(z, fma(z, 0.5, -1.0), -1.0)); else tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[x, -480.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 2.8e-187], N[(z * N[(z * N[(z * -0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision], If[LessEqual[x, 1.4e+88], N[(-1.0 / N[(z * N[(z * 0.5 + -1.0), $MachinePrecision] + -1.0), $MachinePrecision]), $MachinePrecision], N[(x * N[(x * N[(x * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -480:\\
\;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
\mathbf{elif}\;x \leq 2.8 \cdot 10^{-187}:\\
\;\;\;\;\mathsf{fma}\left(z, z \cdot \mathsf{fma}\left(z, -0.16666666666666666, 0.5\right), 1\right)\\
\mathbf{elif}\;x \leq 1.4 \cdot 10^{+88}:\\
\;\;\;\;\frac{-1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.5, -1\right), -1\right)}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.16666666666666666, 0.5\right), 1\right), 1\right)\\
\end{array}
\end{array}
if x < -480Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6440.5
Simplified40.5%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6414.4
Simplified14.4%
Taylor expanded in z around inf
metadata-evalN/A
distribute-lft-neg-inN/A
*-commutativeN/A
+-rgt-identityN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.6
Simplified49.6%
+-rgt-identityN/A
associate-*r*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6449.6
Applied egg-rr49.6%
if -480 < x < 2.8e-187Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6461.8
Simplified61.8%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6439.3
Simplified39.3%
Taylor expanded in z around inf
sub-negN/A
remove-double-negN/A
distribute-neg-inN/A
+-commutativeN/A
sub-negN/A
distribute-rgt-neg-inN/A
unpow2N/A
associate-*l*N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
associate-*r*N/A
sub-negN/A
distribute-rgt-inN/A
distribute-rgt-neg-inN/A
associate-*l*N/A
Simplified39.3%
if 2.8e-187 < x < 1.39999999999999994e88Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6468.1
Simplified68.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6437.7
Simplified37.7%
flip-+N/A
/-lowering-/.f64N/A
metadata-evalN/A
sub-negN/A
*-commutativeN/A
associate-*l*N/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
Applied egg-rr31.0%
Taylor expanded in z around 0
Simplified48.9%
if 1.39999999999999994e88 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified96.0%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6488.5
Simplified88.5%
Final simplification53.2%
(FPCore (x y z)
:precision binary64
(if (<= x -5500.0)
(* z (* (* z z) -0.16666666666666666))
(if (<= x 3.4e+56)
(fma z (fma z (fma z -0.16666666666666666 0.5) -1.0) 1.0)
(fma x (fma x (fma x 0.16666666666666666 0.5) 1.0) 1.0))))
double code(double x, double y, double z) {
double tmp;
if (x <= -5500.0) {
tmp = z * ((z * z) * -0.16666666666666666);
} else if (x <= 3.4e+56) {
tmp = fma(z, fma(z, fma(z, -0.16666666666666666, 0.5), -1.0), 1.0);
} else {
tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (x <= -5500.0) tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666)); elseif (x <= 3.4e+56) tmp = fma(z, fma(z, fma(z, -0.16666666666666666, 0.5), -1.0), 1.0); else tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[x, -5500.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 3.4e+56], N[(z * N[(z * N[(z * -0.16666666666666666 + 0.5), $MachinePrecision] + -1.0), $MachinePrecision] + 1.0), $MachinePrecision], N[(x * N[(x * N[(x * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -5500:\\
\;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
\mathbf{elif}\;x \leq 3.4 \cdot 10^{+56}:\\
\;\;\;\;\mathsf{fma}\left(z, \mathsf{fma}\left(z, \mathsf{fma}\left(z, -0.16666666666666666, 0.5\right), -1\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.16666666666666666, 0.5\right), 1\right), 1\right)\\
\end{array}
\end{array}
if x < -5500Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6440.5
Simplified40.5%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6414.4
Simplified14.4%
Taylor expanded in z around inf
metadata-evalN/A
distribute-lft-neg-inN/A
*-commutativeN/A
+-rgt-identityN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.6
Simplified49.6%
+-rgt-identityN/A
associate-*r*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6449.6
Applied egg-rr49.6%
if -5500 < x < 3.40000000000000001e56Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6465.1
Simplified65.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6439.9
Simplified39.9%
if 3.40000000000000001e56 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified94.4%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6482.2
Simplified82.2%
Final simplification51.2%
(FPCore (x y z)
:precision binary64
(if (<= x -420.0)
(* z (* (* z z) -0.16666666666666666))
(if (<= x 9.6e+54)
(fma z (* z (fma z -0.16666666666666666 0.5)) 1.0)
(fma x (fma x (fma x 0.16666666666666666 0.5) 1.0) 1.0))))
double code(double x, double y, double z) {
double tmp;
if (x <= -420.0) {
tmp = z * ((z * z) * -0.16666666666666666);
} else if (x <= 9.6e+54) {
tmp = fma(z, (z * fma(z, -0.16666666666666666, 0.5)), 1.0);
} else {
tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (x <= -420.0) tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666)); elseif (x <= 9.6e+54) tmp = fma(z, Float64(z * fma(z, -0.16666666666666666, 0.5)), 1.0); else tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[x, -420.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 9.6e+54], N[(z * N[(z * N[(z * -0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision], N[(x * N[(x * N[(x * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -420:\\
\;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
\mathbf{elif}\;x \leq 9.6 \cdot 10^{+54}:\\
\;\;\;\;\mathsf{fma}\left(z, z \cdot \mathsf{fma}\left(z, -0.16666666666666666, 0.5\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.16666666666666666, 0.5\right), 1\right), 1\right)\\
\end{array}
\end{array}
if x < -420Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6440.5
Simplified40.5%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6414.4
Simplified14.4%
Taylor expanded in z around inf
metadata-evalN/A
distribute-lft-neg-inN/A
*-commutativeN/A
+-rgt-identityN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.6
Simplified49.6%
+-rgt-identityN/A
associate-*r*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6449.6
Applied egg-rr49.6%
if -420 < x < 9.59999999999999993e54Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6465.1
Simplified65.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6439.9
Simplified39.9%
Taylor expanded in z around inf
sub-negN/A
remove-double-negN/A
distribute-neg-inN/A
+-commutativeN/A
sub-negN/A
distribute-rgt-neg-inN/A
unpow2N/A
associate-*l*N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
associate-*r*N/A
sub-negN/A
distribute-rgt-inN/A
distribute-rgt-neg-inN/A
associate-*l*N/A
Simplified39.5%
if 9.59999999999999993e54 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified94.4%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6482.2
Simplified82.2%
Final simplification51.0%
(FPCore (x y z)
:precision binary64
(if (<= x -480.0)
(* z (* (* z z) -0.16666666666666666))
(if (<= x 7.16e+109)
(fma z (* z (fma z -0.16666666666666666 0.5)) 1.0)
(fma x (fma x 0.5 1.0) 1.0))))
double code(double x, double y, double z) {
double tmp;
if (x <= -480.0) {
tmp = z * ((z * z) * -0.16666666666666666);
} else if (x <= 7.16e+109) {
tmp = fma(z, (z * fma(z, -0.16666666666666666, 0.5)), 1.0);
} else {
tmp = fma(x, fma(x, 0.5, 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (x <= -480.0) tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666)); elseif (x <= 7.16e+109) tmp = fma(z, Float64(z * fma(z, -0.16666666666666666, 0.5)), 1.0); else tmp = fma(x, fma(x, 0.5, 1.0), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[x, -480.0], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 7.16e+109], N[(z * N[(z * N[(z * -0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision], N[(x * N[(x * 0.5 + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -480:\\
\;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
\mathbf{elif}\;x \leq 7.16 \cdot 10^{+109}:\\
\;\;\;\;\mathsf{fma}\left(z, z \cdot \mathsf{fma}\left(z, -0.16666666666666666, 0.5\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.5, 1\right), 1\right)\\
\end{array}
\end{array}
if x < -480Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6440.5
Simplified40.5%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6414.4
Simplified14.4%
Taylor expanded in z around inf
metadata-evalN/A
distribute-lft-neg-inN/A
*-commutativeN/A
+-rgt-identityN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6449.6
Simplified49.6%
+-rgt-identityN/A
associate-*r*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6449.6
Applied egg-rr49.6%
if -480 < x < 7.1600000000000001e109Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6462.8
Simplified62.8%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6438.0
Simplified38.0%
Taylor expanded in z around inf
sub-negN/A
remove-double-negN/A
distribute-neg-inN/A
+-commutativeN/A
sub-negN/A
distribute-rgt-neg-inN/A
unpow2N/A
associate-*l*N/A
distribute-rgt-neg-inN/A
mul-1-negN/A
*-lowering-*.f64N/A
associate-*r*N/A
sub-negN/A
distribute-rgt-inN/A
distribute-rgt-neg-inN/A
associate-*l*N/A
Simplified37.6%
if 7.1600000000000001e109 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified95.4%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6480.4
Simplified80.4%
Final simplification47.9%
(FPCore (x y z)
:precision binary64
(if (<= x -3.3e-26)
(* z (* (* z z) -0.16666666666666666))
(if (<= x 7.6e+106)
(fma z (fma 0.5 z -1.0) 1.0)
(fma x (fma x 0.5 1.0) 1.0))))
double code(double x, double y, double z) {
double tmp;
if (x <= -3.3e-26) {
tmp = z * ((z * z) * -0.16666666666666666);
} else if (x <= 7.6e+106) {
tmp = fma(z, fma(0.5, z, -1.0), 1.0);
} else {
tmp = fma(x, fma(x, 0.5, 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (x <= -3.3e-26) tmp = Float64(z * Float64(Float64(z * z) * -0.16666666666666666)); elseif (x <= 7.6e+106) tmp = fma(z, fma(0.5, z, -1.0), 1.0); else tmp = fma(x, fma(x, 0.5, 1.0), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[x, -3.3e-26], N[(z * N[(N[(z * z), $MachinePrecision] * -0.16666666666666666), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 7.6e+106], N[(z * N[(0.5 * z + -1.0), $MachinePrecision] + 1.0), $MachinePrecision], N[(x * N[(x * 0.5 + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -3.3 \cdot 10^{-26}:\\
\;\;\;\;z \cdot \left(\left(z \cdot z\right) \cdot -0.16666666666666666\right)\\
\mathbf{elif}\;x \leq 7.6 \cdot 10^{+106}:\\
\;\;\;\;\mathsf{fma}\left(z, \mathsf{fma}\left(0.5, z, -1\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.5, 1\right), 1\right)\\
\end{array}
\end{array}
if x < -3.2999999999999998e-26Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6443.7
Simplified43.7%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6417.0
Simplified17.0%
Taylor expanded in z around inf
metadata-evalN/A
distribute-lft-neg-inN/A
*-commutativeN/A
+-rgt-identityN/A
*-commutativeN/A
distribute-lft-neg-inN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6448.3
Simplified48.3%
+-rgt-identityN/A
associate-*r*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6448.3
Applied egg-rr48.3%
if -3.2999999999999998e-26 < x < 7.5999999999999996e106Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6461.9
Simplified61.9%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6435.4
Simplified35.4%
if 7.5999999999999996e106 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified95.5%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6478.7
Simplified78.7%
Final simplification46.5%
(FPCore (x y z)
:precision binary64
(if (<= x -6e-11)
(fma 0.5 (* z z) 0.0)
(if (<= x 8e+106)
(fma z (fma 0.5 z -1.0) 1.0)
(fma x (fma x 0.5 1.0) 1.0))))
double code(double x, double y, double z) {
double tmp;
if (x <= -6e-11) {
tmp = fma(0.5, (z * z), 0.0);
} else if (x <= 8e+106) {
tmp = fma(z, fma(0.5, z, -1.0), 1.0);
} else {
tmp = fma(x, fma(x, 0.5, 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (x <= -6e-11) tmp = fma(0.5, Float64(z * z), 0.0); elseif (x <= 8e+106) tmp = fma(z, fma(0.5, z, -1.0), 1.0); else tmp = fma(x, fma(x, 0.5, 1.0), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[x, -6e-11], N[(0.5 * N[(z * z), $MachinePrecision] + 0.0), $MachinePrecision], If[LessEqual[x, 8e+106], N[(z * N[(0.5 * z + -1.0), $MachinePrecision] + 1.0), $MachinePrecision], N[(x * N[(x * 0.5 + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -6 \cdot 10^{-11}:\\
\;\;\;\;\mathsf{fma}\left(0.5, z \cdot z, 0\right)\\
\mathbf{elif}\;x \leq 8 \cdot 10^{+106}:\\
\;\;\;\;\mathsf{fma}\left(z, \mathsf{fma}\left(0.5, z, -1\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.5, 1\right), 1\right)\\
\end{array}
\end{array}
if x < -6e-11Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6442.3
Simplified42.3%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6414.1
Simplified14.1%
Taylor expanded in z around inf
+-rgt-identityN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f6439.1
Simplified39.1%
if -6e-11 < x < 8.00000000000000073e106Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f6462.0
Simplified62.0%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6435.0
Simplified35.0%
if 8.00000000000000073e106 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified95.5%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6478.7
Simplified78.7%
(FPCore (x y z) :precision binary64 (+ x 1.0))
double code(double x, double y, double z) {
return x + 1.0;
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = x + 1.0d0
end function
public static double code(double x, double y, double z) {
return x + 1.0;
}
def code(x, y, z): return x + 1.0
function code(x, y, z) return Float64(x + 1.0) end
function tmp = code(x, y, z) tmp = x + 1.0; end
code[x_, y_, z_] := N[(x + 1.0), $MachinePrecision]
\begin{array}{l}
\\
x + 1
\end{array}
Initial program 100.0%
Taylor expanded in x around inf
Simplified56.1%
Taylor expanded in x around 0
+-lowering-+.f6415.6
Simplified15.6%
Final simplification15.6%
(FPCore (x y z) :precision binary64 1.0)
double code(double x, double y, double z) {
return 1.0;
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = 1.0d0
end function
public static double code(double x, double y, double z) {
return 1.0;
}
def code(x, y, z): return 1.0
function code(x, y, z) return 1.0 end
function tmp = code(x, y, z) tmp = 1.0; end
code[x_, y_, z_] := 1.0
\begin{array}{l}
\\
1
\end{array}
Initial program 100.0%
Taylor expanded in x around inf
Simplified56.1%
Taylor expanded in x around 0
Simplified15.4%
(FPCore (x y z) :precision binary64 (exp (+ (- x z) (* (log y) y))))
double code(double x, double y, double z) {
return exp(((x - z) + (log(y) * y)));
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = exp(((x - z) + (log(y) * y)))
end function
public static double code(double x, double y, double z) {
return Math.exp(((x - z) + (Math.log(y) * y)));
}
def code(x, y, z): return math.exp(((x - z) + (math.log(y) * y)))
function code(x, y, z) return exp(Float64(Float64(x - z) + Float64(log(y) * y))) end
function tmp = code(x, y, z) tmp = exp(((x - z) + (log(y) * y))); end
code[x_, y_, z_] := N[Exp[N[(N[(x - z), $MachinePrecision] + N[(N[Log[y], $MachinePrecision] * y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
e^{\left(x - z\right) + \log y \cdot y}
\end{array}
herbie shell --seed 2024195
(FPCore (x y z)
:name "Statistics.Distribution.Poisson.Internal:probability from math-functions-0.1.5.2"
:precision binary64
:alt
(! :herbie-platform default (exp (+ (- x z) (* (log y) y))))
(exp (- (+ x (* y (log y))) z)))