
(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 20 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 (fma z -0.16666666666666666 0.5)))
(t_2 (* z (fma t_1 t_1 -1.0))))
(if (<= t_0 0.5)
(/ 1.0 (fma z (fma z (fma z 0.16666666666666666 0.5) 1.0) 1.0))
(if (<= t_0 2e+80)
(fma t_2 (/ -6.0 (* z z)) 1.0)
(if (<= t_0 2e+212)
(* z (* z (fma z (+ -0.16666666666666666 (/ -1.0 (* z z))) 0.5)))
(fma t_2 (/ 1.0 (fma z 0.5 1.0)) 1.0))))))
double code(double x, double y, double z) {
double t_0 = (x + (y * log(y))) - z;
double t_1 = z * fma(z, -0.16666666666666666, 0.5);
double t_2 = z * fma(t_1, t_1, -1.0);
double tmp;
if (t_0 <= 0.5) {
tmp = 1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0);
} else if (t_0 <= 2e+80) {
tmp = fma(t_2, (-6.0 / (z * z)), 1.0);
} else if (t_0 <= 2e+212) {
tmp = z * (z * fma(z, (-0.16666666666666666 + (-1.0 / (z * z))), 0.5));
} else {
tmp = fma(t_2, (1.0 / fma(z, 0.5, 1.0)), 1.0);
}
return tmp;
}
function code(x, y, z) t_0 = Float64(Float64(x + Float64(y * log(y))) - z) t_1 = Float64(z * fma(z, -0.16666666666666666, 0.5)) t_2 = Float64(z * fma(t_1, t_1, -1.0)) tmp = 0.0 if (t_0 <= 0.5) tmp = Float64(1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0)); elseif (t_0 <= 2e+80) tmp = fma(t_2, Float64(-6.0 / Float64(z * z)), 1.0); elseif (t_0 <= 2e+212) tmp = Float64(z * Float64(z * fma(z, Float64(-0.16666666666666666 + Float64(-1.0 / Float64(z * z))), 0.5))); else tmp = fma(t_2, Float64(1.0 / fma(z, 0.5, 1.0)), 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 * -0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(z * N[(t$95$1 * t$95$1 + -1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, 0.5], N[(1.0 / N[(z * N[(z * N[(z * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 2e+80], N[(t$95$2 * N[(-6.0 / N[(z * z), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision], If[LessEqual[t$95$0, 2e+212], N[(z * N[(z * N[(z * N[(-0.16666666666666666 + N[(-1.0 / N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$2 * N[(1.0 / N[(z * 0.5 + 1.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(x + y \cdot \log y\right) - z\\
t_1 := z \cdot \mathsf{fma}\left(z, -0.16666666666666666, 0.5\right)\\
t_2 := z \cdot \mathsf{fma}\left(t\_1, t\_1, -1\right)\\
\mathbf{if}\;t\_0 \leq 0.5:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\mathbf{elif}\;t\_0 \leq 2 \cdot 10^{+80}:\\
\;\;\;\;\mathsf{fma}\left(t\_2, \frac{-6}{z \cdot z}, 1\right)\\
\mathbf{elif}\;t\_0 \leq 2 \cdot 10^{+212}:\\
\;\;\;\;z \cdot \left(z \cdot \mathsf{fma}\left(z, -0.16666666666666666 + \frac{-1}{z \cdot z}, 0.5\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t\_2, \frac{1}{\mathsf{fma}\left(z, 0.5, 1\right)}, 1\right)\\
\end{array}
\end{array}
if (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 0.5Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6467.4
Simplified67.4%
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.f6430.8
Simplified30.8%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr30.8%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6465.8
Simplified65.8%
if 0.5 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 2e80Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6431.3
Simplified31.3%
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.f643.4
Simplified3.4%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr15.1%
Taylor expanded in z around inf
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6427.0
Simplified27.0%
if 2e80 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 1.9999999999999998e212Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6445.3
Simplified45.3%
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.f6433.2
Simplified33.2%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr33.2%
Taylor expanded in z around inf
cube-multN/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
sub-negN/A
+-commutativeN/A
distribute-lft-inN/A
*-commutativeN/A
associate-*r*N/A
rgt-mult-inverseN/A
metadata-evalN/A
Simplified55.7%
if 1.9999999999999998e212 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6444.2
Simplified44.2%
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.9
Simplified38.9%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr5.4%
Taylor expanded in z around 0
Simplified56.1%
Final simplification57.2%
(FPCore (x y z) :precision binary64 (let* ((t_0 (+ x (* y (log y))))) (if (<= t_0 -2e+106) (exp x) (if (<= t_0 2e+32) (exp (- z)) (pow y y)))))
double code(double x, double y, double z) {
double t_0 = x + (y * log(y));
double tmp;
if (t_0 <= -2e+106) {
tmp = exp(x);
} else if (t_0 <= 2e+32) {
tmp = exp(-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 <= (-2d+106)) then
tmp = exp(x)
else if (t_0 <= 2d+32) then
tmp = exp(-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 <= -2e+106) {
tmp = Math.exp(x);
} else if (t_0 <= 2e+32) {
tmp = Math.exp(-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 <= -2e+106: tmp = math.exp(x) elif t_0 <= 2e+32: tmp = math.exp(-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 <= -2e+106) tmp = exp(x); elseif (t_0 <= 2e+32) tmp = exp(Float64(-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 <= -2e+106) tmp = exp(x); elseif (t_0 <= 2e+32) tmp = exp(-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, -2e+106], N[Exp[x], $MachinePrecision], If[LessEqual[t$95$0, 2e+32], N[Exp[(-z)], $MachinePrecision], N[Power[y, y], $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x + y \cdot \log y\\
\mathbf{if}\;t\_0 \leq -2 \cdot 10^{+106}:\\
\;\;\;\;e^{x}\\
\mathbf{elif}\;t\_0 \leq 2 \cdot 10^{+32}:\\
\;\;\;\;e^{-z}\\
\mathbf{else}:\\
\;\;\;\;{y}^{y}\\
\end{array}
\end{array}
if (+.f64 x (*.f64 y (log.f64 y))) < -2.00000000000000018e106Initial program 100.0%
Taylor expanded in x around inf
Simplified94.4%
if -2.00000000000000018e106 < (+.f64 x (*.f64 y (log.f64 y))) < 2.00000000000000011e32Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6486.3
Simplified86.3%
if 2.00000000000000011e32 < (+.f64 x (*.f64 y (log.f64 y))) Initial program 100.0%
Taylor expanded in y around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
log-lowering-log.f6473.4
Simplified73.4%
*-commutativeN/A
exp-to-powN/A
pow-lowering-pow.f6473.4
Applied egg-rr73.4%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (- (+ x (* y (log y))) z))
(t_1 (* z (fma z -0.16666666666666666 0.5)))
(t_2 (* z (fma t_1 t_1 -1.0))))
(if (<= t_0 0.5)
(/ 1.0 (fma z (fma z (fma z 0.16666666666666666 0.5) 1.0) 1.0))
(if (<= t_0 1e+156)
(fma t_2 (/ (+ -6.0 (/ -18.0 z)) (* z z)) 1.0)
(fma t_2 (/ 1.0 (fma z 0.5 1.0)) 1.0)))))
double code(double x, double y, double z) {
double t_0 = (x + (y * log(y))) - z;
double t_1 = z * fma(z, -0.16666666666666666, 0.5);
double t_2 = z * fma(t_1, t_1, -1.0);
double tmp;
if (t_0 <= 0.5) {
tmp = 1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0);
} else if (t_0 <= 1e+156) {
tmp = fma(t_2, ((-6.0 + (-18.0 / z)) / (z * z)), 1.0);
} else {
tmp = fma(t_2, (1.0 / fma(z, 0.5, 1.0)), 1.0);
}
return tmp;
}
function code(x, y, z) t_0 = Float64(Float64(x + Float64(y * log(y))) - z) t_1 = Float64(z * fma(z, -0.16666666666666666, 0.5)) t_2 = Float64(z * fma(t_1, t_1, -1.0)) tmp = 0.0 if (t_0 <= 0.5) tmp = Float64(1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0)); elseif (t_0 <= 1e+156) tmp = fma(t_2, Float64(Float64(-6.0 + Float64(-18.0 / z)) / Float64(z * z)), 1.0); else tmp = fma(t_2, Float64(1.0 / fma(z, 0.5, 1.0)), 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 * -0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(z * N[(t$95$1 * t$95$1 + -1.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, 0.5], N[(1.0 / N[(z * N[(z * N[(z * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+156], N[(t$95$2 * N[(N[(-6.0 + N[(-18.0 / z), $MachinePrecision]), $MachinePrecision] / N[(z * z), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision], N[(t$95$2 * N[(1.0 / N[(z * 0.5 + 1.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(x + y \cdot \log y\right) - z\\
t_1 := z \cdot \mathsf{fma}\left(z, -0.16666666666666666, 0.5\right)\\
t_2 := z \cdot \mathsf{fma}\left(t\_1, t\_1, -1\right)\\
\mathbf{if}\;t\_0 \leq 0.5:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\mathbf{elif}\;t\_0 \leq 10^{+156}:\\
\;\;\;\;\mathsf{fma}\left(t\_2, \frac{-6 + \frac{-18}{z}}{z \cdot z}, 1\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t\_2, \frac{1}{\mathsf{fma}\left(z, 0.5, 1\right)}, 1\right)\\
\end{array}
\end{array}
if (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 0.5Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6467.4
Simplified67.4%
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.f6430.8
Simplified30.8%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr30.8%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6465.8
Simplified65.8%
if 0.5 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 9.9999999999999998e155Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6437.8
Simplified37.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.f6418.8
Simplified18.8%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr28.1%
Taylor expanded in z around inf
associate-*r/N/A
/-lowering-/.f64N/A
neg-mul-1N/A
distribute-neg-inN/A
metadata-evalN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
distribute-neg-fracN/A
/-lowering-/.f64N/A
metadata-evalN/A
unpow2N/A
*-lowering-*.f6465.1
Simplified65.1%
if 9.9999999999999998e155 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6444.8
Simplified44.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.f6437.3
Simplified37.3%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr7.3%
Taylor expanded in z around 0
Simplified52.6%
Final simplification60.3%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (* z (fma z -0.16666666666666666 0.5)))
(t_1 (- (+ x (* y (log y))) z)))
(if (<= t_1 0.5)
(/ 1.0 (fma z (fma z (fma z 0.16666666666666666 0.5) 1.0) 1.0))
(if (<= t_1 2e+49)
(*
(* z z)
(fma
z
(+ (/ 1.0 (* z (* z z))) (+ -0.16666666666666666 (/ -1.0 (* z z))))
0.5))
(fma (* z (fma t_0 t_0 -1.0)) (/ 1.0 (fma z 0.5 1.0)) 1.0)))))
double code(double x, double y, double z) {
double t_0 = z * fma(z, -0.16666666666666666, 0.5);
double t_1 = (x + (y * log(y))) - z;
double tmp;
if (t_1 <= 0.5) {
tmp = 1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0);
} else if (t_1 <= 2e+49) {
tmp = (z * z) * fma(z, ((1.0 / (z * (z * z))) + (-0.16666666666666666 + (-1.0 / (z * z)))), 0.5);
} else {
tmp = fma((z * fma(t_0, t_0, -1.0)), (1.0 / fma(z, 0.5, 1.0)), 1.0);
}
return tmp;
}
function code(x, y, z) t_0 = Float64(z * fma(z, -0.16666666666666666, 0.5)) t_1 = Float64(Float64(x + Float64(y * log(y))) - z) tmp = 0.0 if (t_1 <= 0.5) tmp = Float64(1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0)); elseif (t_1 <= 2e+49) tmp = Float64(Float64(z * z) * fma(z, Float64(Float64(1.0 / Float64(z * Float64(z * z))) + Float64(-0.16666666666666666 + Float64(-1.0 / Float64(z * z)))), 0.5)); else tmp = fma(Float64(z * fma(t_0, t_0, -1.0)), Float64(1.0 / fma(z, 0.5, 1.0)), 1.0); end return tmp end
code[x_, y_, z_] := Block[{t$95$0 = N[(z * N[(z * -0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]}, If[LessEqual[t$95$1, 0.5], N[(1.0 / N[(z * N[(z * N[(z * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 2e+49], N[(N[(z * z), $MachinePrecision] * N[(z * N[(N[(1.0 / N[(z * N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.16666666666666666 + N[(-1.0 / N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 0.5), $MachinePrecision]), $MachinePrecision], N[(N[(z * N[(t$95$0 * t$95$0 + -1.0), $MachinePrecision]), $MachinePrecision] * N[(1.0 / N[(z * 0.5 + 1.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := z \cdot \mathsf{fma}\left(z, -0.16666666666666666, 0.5\right)\\
t_1 := \left(x + y \cdot \log y\right) - z\\
\mathbf{if}\;t\_1 \leq 0.5:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+49}:\\
\;\;\;\;\left(z \cdot z\right) \cdot \mathsf{fma}\left(z, \frac{1}{z \cdot \left(z \cdot z\right)} + \left(-0.16666666666666666 + \frac{-1}{z \cdot z}\right), 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z \cdot \mathsf{fma}\left(t\_0, t\_0, -1\right), \frac{1}{\mathsf{fma}\left(z, 0.5, 1\right)}, 1\right)\\
\end{array}
\end{array}
if (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 0.5Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6467.4
Simplified67.4%
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.f6430.8
Simplified30.8%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr30.8%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6465.8
Simplified65.8%
if 0.5 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 1.99999999999999989e49Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6419.3
Simplified19.3%
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.f643.2
Simplified3.2%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr3.2%
Taylor expanded in z around inf
unpow3N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate--l+N/A
+-commutativeN/A
distribute-lft-inN/A
*-commutativeN/A
associate-*r*N/A
rgt-mult-inverseN/A
metadata-evalN/A
Simplified43.3%
if 1.99999999999999989e49 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6444.5
Simplified44.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.f6433.7
Simplified33.7%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr14.9%
Taylor expanded in z around 0
Simplified49.6%
Final simplification55.8%
(FPCore (x y z) :precision binary64 (let* ((t_0 (- (+ x (* y (log y))) z)) (t_1 (* 0.5 (* z z)))) (if (<= t_0 -2e+25) t_1 (if (<= t_0 5e+96) (+ x 1.0) t_1))))
double code(double x, double y, double z) {
double t_0 = (x + (y * log(y))) - z;
double t_1 = 0.5 * (z * z);
double tmp;
if (t_0 <= -2e+25) {
tmp = t_1;
} else if (t_0 <= 5e+96) {
tmp = x + 1.0;
} else {
tmp = t_1;
}
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) :: t_1
real(8) :: tmp
t_0 = (x + (y * log(y))) - z
t_1 = 0.5d0 * (z * z)
if (t_0 <= (-2d+25)) then
tmp = t_1
else if (t_0 <= 5d+96) then
tmp = x + 1.0d0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = (x + (y * Math.log(y))) - z;
double t_1 = 0.5 * (z * z);
double tmp;
if (t_0 <= -2e+25) {
tmp = t_1;
} else if (t_0 <= 5e+96) {
tmp = x + 1.0;
} else {
tmp = t_1;
}
return tmp;
}
def code(x, y, z): t_0 = (x + (y * math.log(y))) - z t_1 = 0.5 * (z * z) tmp = 0 if t_0 <= -2e+25: tmp = t_1 elif t_0 <= 5e+96: tmp = x + 1.0 else: tmp = t_1 return tmp
function code(x, y, z) t_0 = Float64(Float64(x + Float64(y * log(y))) - z) t_1 = Float64(0.5 * Float64(z * z)) tmp = 0.0 if (t_0 <= -2e+25) tmp = t_1; elseif (t_0 <= 5e+96) tmp = Float64(x + 1.0); else tmp = t_1; end return tmp end
function tmp_2 = code(x, y, z) t_0 = (x + (y * log(y))) - z; t_1 = 0.5 * (z * z); tmp = 0.0; if (t_0 <= -2e+25) tmp = t_1; elseif (t_0 <= 5e+96) tmp = x + 1.0; else tmp = t_1; end tmp_2 = 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]), $MachinePrecision]}, If[LessEqual[t$95$0, -2e+25], t$95$1, If[LessEqual[t$95$0, 5e+96], N[(x + 1.0), $MachinePrecision], t$95$1]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(x + y \cdot \log y\right) - z\\
t_1 := 0.5 \cdot \left(z \cdot z\right)\\
\mathbf{if}\;t\_0 \leq -2 \cdot 10^{+25}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t\_0 \leq 5 \cdot 10^{+96}:\\
\;\;\;\;x + 1\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < -2.00000000000000018e25 or 5.0000000000000004e96 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6449.1
Simplified49.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6424.3
Simplified24.3%
Taylor expanded in z around inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6429.6
Simplified29.6%
if -2.00000000000000018e25 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 5.0000000000000004e96Initial program 100.0%
Taylor expanded in x around inf
Simplified68.0%
Taylor expanded in x around 0
+-lowering-+.f6449.8
Simplified49.8%
Final simplification34.6%
(FPCore (x y z) :precision binary64 (if (<= (exp (- (+ x (* y (log y))) z)) 0.0) (* 0.5 (* z z)) (fma z (* z 0.5) 1.0)))
double code(double x, double y, double z) {
double tmp;
if (exp(((x + (y * log(y))) - z)) <= 0.0) {
tmp = 0.5 * (z * z);
} else {
tmp = fma(z, (z * 0.5), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (exp(Float64(Float64(x + Float64(y * log(y))) - z)) <= 0.0) tmp = Float64(0.5 * Float64(z * z)); else tmp = fma(z, Float64(z * 0.5), 1.0); end return tmp end
code[x_, y_, z_] := If[LessEqual[N[Exp[N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]], $MachinePrecision], 0.0], N[(0.5 * N[(z * z), $MachinePrecision]), $MachinePrecision], N[(z * N[(z * 0.5), $MachinePrecision] + 1.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;e^{\left(x + y \cdot \log y\right) - z} \leq 0:\\
\;\;\;\;0.5 \cdot \left(z \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z, z \cdot 0.5, 1\right)\\
\end{array}
\end{array}
if (exp.f64 (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z)) < 0.0Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6456.3
Simplified56.3%
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%
Taylor expanded in z around inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6418.0
Simplified18.0%
if 0.0 < (exp.f64 (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z)) Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6451.0
Simplified51.0%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6440.8
Simplified40.8%
Taylor expanded in z around inf
*-lowering-*.f6440.8
Simplified40.8%
Final simplification34.6%
(FPCore (x y z) :precision binary64 (if (<= x -1.7e+106) (exp x) (if (<= x 3.4e-5) (exp (- (* y (log y)) z)) (exp x))))
double code(double x, double y, double z) {
double tmp;
if (x <= -1.7e+106) {
tmp = exp(x);
} else if (x <= 3.4e-5) {
tmp = exp(((y * log(y)) - z));
} else {
tmp = exp(x);
}
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 (x <= (-1.7d+106)) then
tmp = exp(x)
else if (x <= 3.4d-5) then
tmp = exp(((y * log(y)) - z))
else
tmp = exp(x)
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if (x <= -1.7e+106) {
tmp = Math.exp(x);
} else if (x <= 3.4e-5) {
tmp = Math.exp(((y * Math.log(y)) - z));
} else {
tmp = Math.exp(x);
}
return tmp;
}
def code(x, y, z): tmp = 0 if x <= -1.7e+106: tmp = math.exp(x) elif x <= 3.4e-5: tmp = math.exp(((y * math.log(y)) - z)) else: tmp = math.exp(x) return tmp
function code(x, y, z) tmp = 0.0 if (x <= -1.7e+106) tmp = exp(x); elseif (x <= 3.4e-5) tmp = exp(Float64(Float64(y * log(y)) - z)); else tmp = exp(x); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if (x <= -1.7e+106) tmp = exp(x); elseif (x <= 3.4e-5) tmp = exp(((y * log(y)) - z)); else tmp = exp(x); end tmp_2 = tmp; end
code[x_, y_, z_] := If[LessEqual[x, -1.7e+106], N[Exp[x], $MachinePrecision], If[LessEqual[x, 3.4e-5], N[Exp[N[(N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision]], $MachinePrecision], N[Exp[x], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.7 \cdot 10^{+106}:\\
\;\;\;\;e^{x}\\
\mathbf{elif}\;x \leq 3.4 \cdot 10^{-5}:\\
\;\;\;\;e^{y \cdot \log y - z}\\
\mathbf{else}:\\
\;\;\;\;e^{x}\\
\end{array}
\end{array}
if x < -1.69999999999999997e106 or 3.4e-5 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified87.8%
if -1.69999999999999997e106 < x < 3.4e-5Initial program 100.0%
Taylor expanded in x around 0
*-lowering-*.f64N/A
log-lowering-log.f6496.8
Simplified96.8%
(FPCore (x y z) :precision binary64 (if (<= (- (+ x (* y (log y))) z) 1e+72) (/ 1.0 (fma z (fma z (fma z 0.16666666666666666 0.5) 1.0) 1.0)) (* z (* z (fma z (+ -0.16666666666666666 (/ -1.0 (* z z))) 0.5)))))
double code(double x, double y, double z) {
double tmp;
if (((x + (y * log(y))) - z) <= 1e+72) {
tmp = 1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0);
} else {
tmp = z * (z * fma(z, (-0.16666666666666666 + (-1.0 / (z * z))), 0.5));
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (Float64(Float64(x + Float64(y * log(y))) - z) <= 1e+72) tmp = Float64(1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0)); else tmp = Float64(z * Float64(z * fma(z, Float64(-0.16666666666666666 + Float64(-1.0 / Float64(z * z))), 0.5))); end return tmp end
code[x_, y_, z_] := If[LessEqual[N[(N[(x + N[(y * N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - z), $MachinePrecision], 1e+72], N[(1.0 / N[(z * N[(z * N[(z * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision], N[(z * N[(z * N[(z * N[(-0.16666666666666666 + N[(-1.0 / N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\left(x + y \cdot \log y\right) - z \leq 10^{+72}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\mathbf{else}:\\
\;\;\;\;z \cdot \left(z \cdot \mathsf{fma}\left(z, -0.16666666666666666 + \frac{-1}{z \cdot z}, 0.5\right)\right)\\
\end{array}
\end{array}
if (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) < 9.99999999999999944e71Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6459.5
Simplified59.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.f6426.1
Simplified26.1%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr26.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6455.1
Simplified55.1%
if 9.99999999999999944e71 < (-.f64 (+.f64 x (*.f64 y (log.f64 y))) z) Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6445.9
Simplified45.9%
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.f6435.8
Simplified35.8%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr35.8%
Taylor expanded in z around inf
cube-multN/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
unpow2N/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
sub-negN/A
+-commutativeN/A
distribute-lft-inN/A
*-commutativeN/A
associate-*r*N/A
rgt-mult-inverseN/A
metadata-evalN/A
Simplified49.8%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (* z (fma z -0.16666666666666666 0.5))))
(if (<= z -6.2e+53)
(fma (* z (fma t_0 t_0 -1.0)) (/ 1.0 (fma z 0.5 1.0)) 1.0)
(if (<= z 1.9e+115)
(exp x)
(/ 1.0 (fma z (fma z (fma z 0.16666666666666666 0.5) 1.0) 1.0))))))
double code(double x, double y, double z) {
double t_0 = z * fma(z, -0.16666666666666666, 0.5);
double tmp;
if (z <= -6.2e+53) {
tmp = fma((z * fma(t_0, t_0, -1.0)), (1.0 / fma(z, 0.5, 1.0)), 1.0);
} else if (z <= 1.9e+115) {
tmp = exp(x);
} else {
tmp = 1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) t_0 = Float64(z * fma(z, -0.16666666666666666, 0.5)) tmp = 0.0 if (z <= -6.2e+53) tmp = fma(Float64(z * fma(t_0, t_0, -1.0)), Float64(1.0 / fma(z, 0.5, 1.0)), 1.0); elseif (z <= 1.9e+115) tmp = exp(x); else tmp = Float64(1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0)); end return tmp end
code[x_, y_, z_] := Block[{t$95$0 = N[(z * N[(z * -0.16666666666666666 + 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z, -6.2e+53], N[(N[(z * N[(t$95$0 * t$95$0 + -1.0), $MachinePrecision]), $MachinePrecision] * N[(1.0 / N[(z * 0.5 + 1.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision], If[LessEqual[z, 1.9e+115], N[Exp[x], $MachinePrecision], N[(1.0 / N[(z * N[(z * N[(z * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := z \cdot \mathsf{fma}\left(z, -0.16666666666666666, 0.5\right)\\
\mathbf{if}\;z \leq -6.2 \cdot 10^{+53}:\\
\;\;\;\;\mathsf{fma}\left(z \cdot \mathsf{fma}\left(t\_0, t\_0, -1\right), \frac{1}{\mathsf{fma}\left(z, 0.5, 1\right)}, 1\right)\\
\mathbf{elif}\;z \leq 1.9 \cdot 10^{+115}:\\
\;\;\;\;e^{x}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\mathsf{fma}\left(z, \mathsf{fma}\left(z, \mathsf{fma}\left(z, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\end{array}
\end{array}
if z < -6.20000000000000038e53Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6486.4
Simplified86.4%
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.f6470.5
Simplified70.5%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
div-invN/A
accelerator-lowering-fma.f64N/A
Applied egg-rr29.5%
Taylor expanded in z around 0
Simplified83.5%
if -6.20000000000000038e53 < z < 1.9e115Initial program 100.0%
Taylor expanded in x around inf
Simplified64.2%
if 1.9e115 < z Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6473.4
Simplified73.4%
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.f641.1
Simplified1.1%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr1.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6473.4
Simplified73.4%
Final simplification70.4%
(FPCore (x y z) :precision binary64 (if (<= y 6.2e-6) (exp x) (pow y y)))
double code(double x, double y, double z) {
double tmp;
if (y <= 6.2e-6) {
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 <= 6.2d-6) 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 <= 6.2e-6) {
tmp = Math.exp(x);
} else {
tmp = Math.pow(y, y);
}
return tmp;
}
def code(x, y, z): tmp = 0 if y <= 6.2e-6: tmp = math.exp(x) else: tmp = math.pow(y, y) return tmp
function code(x, y, z) tmp = 0.0 if (y <= 6.2e-6) tmp = exp(x); else tmp = y ^ y; end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if (y <= 6.2e-6) tmp = exp(x); else tmp = y ^ y; end tmp_2 = tmp; end
code[x_, y_, z_] := If[LessEqual[y, 6.2e-6], N[Exp[x], $MachinePrecision], N[Power[y, y], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y \leq 6.2 \cdot 10^{-6}:\\
\;\;\;\;e^{x}\\
\mathbf{else}:\\
\;\;\;\;{y}^{y}\\
\end{array}
\end{array}
if y < 6.1999999999999999e-6Initial program 100.0%
Taylor expanded in x around inf
Simplified71.4%
if 6.1999999999999999e-6 < y Initial program 100.0%
Taylor expanded in y around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
log-recN/A
remove-double-negN/A
*-lowering-*.f64N/A
log-lowering-log.f6482.2
Simplified82.2%
*-commutativeN/A
exp-to-powN/A
pow-lowering-pow.f6482.2
Applied egg-rr82.2%
(FPCore (x y z)
:precision binary64
(if (<= z -2.6e+77)
(/
(* (* z z) (fma (* z z) 0.027777777777777776 -0.25))
(fma z -0.16666666666666666 -0.5))
(if (<= z 1.9e+115)
(fma x (fma x (fma x 0.16666666666666666 0.5) 1.0) 1.0)
(/ 1.0 (fma z (fma z (fma z 0.16666666666666666 0.5) 1.0) 1.0)))))
double code(double x, double y, double z) {
double tmp;
if (z <= -2.6e+77) {
tmp = ((z * z) * fma((z * z), 0.027777777777777776, -0.25)) / fma(z, -0.16666666666666666, -0.5);
} else if (z <= 1.9e+115) {
tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0);
} else {
tmp = 1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (z <= -2.6e+77) tmp = Float64(Float64(Float64(z * z) * fma(Float64(z * z), 0.027777777777777776, -0.25)) / fma(z, -0.16666666666666666, -0.5)); elseif (z <= 1.9e+115) tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0); else tmp = Float64(1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0)); end return tmp end
code[x_, y_, z_] := If[LessEqual[z, -2.6e+77], N[(N[(N[(z * z), $MachinePrecision] * N[(N[(z * z), $MachinePrecision] * 0.027777777777777776 + -0.25), $MachinePrecision]), $MachinePrecision] / N[(z * -0.16666666666666666 + -0.5), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 1.9e+115], N[(x * N[(x * N[(x * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision], N[(1.0 / N[(z * N[(z * N[(z * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -2.6 \cdot 10^{+77}:\\
\;\;\;\;\frac{\left(z \cdot z\right) \cdot \mathsf{fma}\left(z \cdot z, 0.027777777777777776, -0.25\right)}{\mathsf{fma}\left(z, -0.16666666666666666, -0.5\right)}\\
\mathbf{elif}\;z \leq 1.9 \cdot 10^{+115}:\\
\;\;\;\;\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, \mathsf{fma}\left(z, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\end{array}
\end{array}
if z < -2.6000000000000002e77Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6485.0
Simplified85.0%
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.f6477.1
Simplified77.1%
Taylor expanded in z around inf
unpow3N/A
unpow2N/A
associate-*l*N/A
sub-negN/A
metadata-evalN/A
distribute-rgt-inN/A
distribute-lft-inN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
distribute-lft-inN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6477.1
Simplified77.1%
*-commutativeN/A
flip-+N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
sub-negN/A
swap-sqrN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
*-lowering-*.f64N/A
sub-negN/A
accelerator-lowering-fma.f64N/A
metadata-eval85.0
Applied egg-rr85.0%
if -2.6000000000000002e77 < z < 1.9e115Initial program 100.0%
Taylor expanded in x around inf
Simplified63.1%
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.4
Simplified39.4%
if 1.9e115 < z Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6473.4
Simplified73.4%
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.f641.1
Simplified1.1%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr1.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6473.4
Simplified73.4%
Final simplification54.8%
(FPCore (x y z)
:precision binary64
(if (<= z -2.6e+77)
(* -0.16666666666666666 (* z (* z z)))
(if (<= z 1.9e+115)
(fma x (fma x (fma x 0.16666666666666666 0.5) 1.0) 1.0)
(/ 1.0 (fma z (fma z (fma z 0.16666666666666666 0.5) 1.0) 1.0)))))
double code(double x, double y, double z) {
double tmp;
if (z <= -2.6e+77) {
tmp = -0.16666666666666666 * (z * (z * z));
} else if (z <= 1.9e+115) {
tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0);
} else {
tmp = 1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0);
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (z <= -2.6e+77) tmp = Float64(-0.16666666666666666 * Float64(z * Float64(z * z))); elseif (z <= 1.9e+115) tmp = fma(x, fma(x, fma(x, 0.16666666666666666, 0.5), 1.0), 1.0); else tmp = Float64(1.0 / fma(z, fma(z, fma(z, 0.16666666666666666, 0.5), 1.0), 1.0)); end return tmp end
code[x_, y_, z_] := If[LessEqual[z, -2.6e+77], N[(-0.16666666666666666 * N[(z * N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 1.9e+115], N[(x * N[(x * N[(x * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision], N[(1.0 / N[(z * N[(z * N[(z * 0.16666666666666666 + 0.5), $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -2.6 \cdot 10^{+77}:\\
\;\;\;\;-0.16666666666666666 \cdot \left(z \cdot \left(z \cdot z\right)\right)\\
\mathbf{elif}\;z \leq 1.9 \cdot 10^{+115}:\\
\;\;\;\;\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, \mathsf{fma}\left(z, 0.16666666666666666, 0.5\right), 1\right), 1\right)}\\
\end{array}
\end{array}
if z < -2.6000000000000002e77Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6485.0
Simplified85.0%
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.f6477.1
Simplified77.1%
Taylor expanded in z around inf
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6477.1
Simplified77.1%
if -2.6000000000000002e77 < z < 1.9e115Initial program 100.0%
Taylor expanded in x around inf
Simplified63.1%
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.4
Simplified39.4%
if 1.9e115 < z Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6473.4
Simplified73.4%
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.f641.1
Simplified1.1%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr1.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6473.4
Simplified73.4%
(FPCore (x y z)
:precision binary64
(if (<= z -4.6e+77)
(* -0.16666666666666666 (* z (* z z)))
(if (<= z 3.3e+115)
(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 <= -4.6e+77) {
tmp = -0.16666666666666666 * (z * (z * z));
} else if (z <= 3.3e+115) {
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 <= -4.6e+77) tmp = Float64(-0.16666666666666666 * Float64(z * Float64(z * z))); elseif (z <= 3.3e+115) 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, -4.6e+77], N[(-0.16666666666666666 * N[(z * N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 3.3e+115], 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 -4.6 \cdot 10^{+77}:\\
\;\;\;\;-0.16666666666666666 \cdot \left(z \cdot \left(z \cdot z\right)\right)\\
\mathbf{elif}\;z \leq 3.3 \cdot 10^{+115}:\\
\;\;\;\;\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 < -4.5999999999999999e77Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6485.0
Simplified85.0%
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.f6477.1
Simplified77.1%
Taylor expanded in z around inf
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6477.1
Simplified77.1%
if -4.5999999999999999e77 < z < 3.30000000000000005e115Initial program 100.0%
Taylor expanded in x around inf
Simplified63.1%
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.4
Simplified39.4%
if 3.30000000000000005e115 < z Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6473.4
Simplified73.4%
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.f641.1
Simplified1.1%
flip3-+N/A
clear-numN/A
/-lowering-/.f64N/A
clear-numN/A
flip3-+N/A
Applied egg-rr1.1%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6455.9
Simplified55.9%
(FPCore (x y z)
:precision binary64
(if (<= x -1.5e+22)
(* -0.16666666666666666 (* z (* z z)))
(if (<= x 2.95e+60)
(fma z (* -0.16666666666666666 (* z z)) 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 <= -1.5e+22) {
tmp = -0.16666666666666666 * (z * (z * z));
} else if (x <= 2.95e+60) {
tmp = fma(z, (-0.16666666666666666 * (z * z)), 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 <= -1.5e+22) tmp = Float64(-0.16666666666666666 * Float64(z * Float64(z * z))); elseif (x <= 2.95e+60) tmp = fma(z, Float64(-0.16666666666666666 * Float64(z * z)), 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, -1.5e+22], N[(-0.16666666666666666 * N[(z * N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 2.95e+60], N[(z * N[(-0.16666666666666666 * N[(z * z), $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 -1.5 \cdot 10^{+22}:\\
\;\;\;\;-0.16666666666666666 \cdot \left(z \cdot \left(z \cdot z\right)\right)\\
\mathbf{elif}\;x \leq 2.95 \cdot 10^{+60}:\\
\;\;\;\;\mathsf{fma}\left(z, -0.16666666666666666 \cdot \left(z \cdot z\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 < -1.5e22Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6434.5
Simplified34.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.f6417.4
Simplified17.4%
Taylor expanded in z around inf
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6441.0
Simplified41.0%
if -1.5e22 < x < 2.9500000000000001e60Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6464.7
Simplified64.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.f6439.9
Simplified39.9%
Taylor expanded in z around inf
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6439.9
Simplified39.9%
if 2.9500000000000001e60 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified92.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.f6480.8
Simplified80.8%
Final simplification48.0%
(FPCore (x y z)
:precision binary64
(if (<= x -1.5e+22)
(* -0.16666666666666666 (* z (* z z)))
(if (<= x 1.25e+57)
(fma z (* -0.16666666666666666 (* z z)) 1.0)
(fma x (fma x 0.5 1.0) 1.0))))
double code(double x, double y, double z) {
double tmp;
if (x <= -1.5e+22) {
tmp = -0.16666666666666666 * (z * (z * z));
} else if (x <= 1.25e+57) {
tmp = fma(z, (-0.16666666666666666 * (z * z)), 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 <= -1.5e+22) tmp = Float64(-0.16666666666666666 * Float64(z * Float64(z * z))); elseif (x <= 1.25e+57) tmp = fma(z, Float64(-0.16666666666666666 * Float64(z * z)), 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, -1.5e+22], N[(-0.16666666666666666 * N[(z * N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 1.25e+57], N[(z * N[(-0.16666666666666666 * N[(z * z), $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 -1.5 \cdot 10^{+22}:\\
\;\;\;\;-0.16666666666666666 \cdot \left(z \cdot \left(z \cdot z\right)\right)\\
\mathbf{elif}\;x \leq 1.25 \cdot 10^{+57}:\\
\;\;\;\;\mathsf{fma}\left(z, -0.16666666666666666 \cdot \left(z \cdot z\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 < -1.5e22Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6434.5
Simplified34.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.f6417.4
Simplified17.4%
Taylor expanded in z around inf
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6441.0
Simplified41.0%
if -1.5e22 < x < 1.24999999999999993e57Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6464.7
Simplified64.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.f6439.9
Simplified39.9%
Taylor expanded in z around inf
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6439.9
Simplified39.9%
if 1.24999999999999993e57 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified92.0%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6471.1
Simplified71.1%
Final simplification46.1%
(FPCore (x y z) :precision binary64 (if (<= x -2.4e+22) (* -0.16666666666666666 (* z (* z z))) (if (<= x 2.95e+60) (fma z (* z 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 <= -2.4e+22) {
tmp = -0.16666666666666666 * (z * (z * z));
} else if (x <= 2.95e+60) {
tmp = fma(z, (z * 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 <= -2.4e+22) tmp = Float64(-0.16666666666666666 * Float64(z * Float64(z * z))); elseif (x <= 2.95e+60) tmp = fma(z, Float64(z * 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, -2.4e+22], N[(-0.16666666666666666 * N[(z * N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 2.95e+60], N[(z * N[(z * 0.5), $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 -2.4 \cdot 10^{+22}:\\
\;\;\;\;-0.16666666666666666 \cdot \left(z \cdot \left(z \cdot z\right)\right)\\
\mathbf{elif}\;x \leq 2.95 \cdot 10^{+60}:\\
\;\;\;\;\mathsf{fma}\left(z, z \cdot 0.5, 1\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.5, 1\right), 1\right)\\
\end{array}
\end{array}
if x < -2.4e22Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6434.5
Simplified34.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.f6417.4
Simplified17.4%
Taylor expanded in z around inf
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6441.0
Simplified41.0%
if -2.4e22 < x < 2.9500000000000001e60Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6464.7
Simplified64.7%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6438.9
Simplified38.9%
Taylor expanded in z around inf
*-lowering-*.f6438.9
Simplified38.9%
if 2.9500000000000001e60 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified92.0%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6471.1
Simplified71.1%
Final simplification45.6%
(FPCore (x y z) :precision binary64 (if (<= x -1.65e+22) (* 0.5 (* z z)) (if (<= x 2.95e+60) (fma z (* z 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 <= -1.65e+22) {
tmp = 0.5 * (z * z);
} else if (x <= 2.95e+60) {
tmp = fma(z, (z * 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 <= -1.65e+22) tmp = Float64(0.5 * Float64(z * z)); elseif (x <= 2.95e+60) tmp = fma(z, Float64(z * 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, -1.65e+22], N[(0.5 * N[(z * z), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 2.95e+60], N[(z * N[(z * 0.5), $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 -1.65 \cdot 10^{+22}:\\
\;\;\;\;0.5 \cdot \left(z \cdot z\right)\\
\mathbf{elif}\;x \leq 2.95 \cdot 10^{+60}:\\
\;\;\;\;\mathsf{fma}\left(z, z \cdot 0.5, 1\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, \mathsf{fma}\left(x, 0.5, 1\right), 1\right)\\
\end{array}
\end{array}
if x < -1.6499999999999999e22Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6434.5
Simplified34.5%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6416.4
Simplified16.4%
Taylor expanded in z around inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6435.0
Simplified35.0%
if -1.6499999999999999e22 < x < 2.9500000000000001e60Initial program 100.0%
Taylor expanded in z around inf
mul-1-negN/A
neg-lowering-neg.f6464.7
Simplified64.7%
Taylor expanded in z around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
sub-negN/A
metadata-evalN/A
accelerator-lowering-fma.f6438.9
Simplified38.9%
Taylor expanded in z around inf
*-lowering-*.f6438.9
Simplified38.9%
if 2.9500000000000001e60 < x Initial program 100.0%
Taylor expanded in x around inf
Simplified92.0%
Taylor expanded in x around 0
+-commutativeN/A
accelerator-lowering-fma.f64N/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f6471.1
Simplified71.1%
Final simplification44.2%
(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
Simplified52.6%
Taylor expanded in x around 0
+-lowering-+.f6414.8
Simplified14.8%
Final simplification14.8%
(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
Simplified52.6%
Taylor expanded in x around 0
Simplified14.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 2024198
(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)))