
(FPCore (x y z) :precision binary64 (fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))
double code(double x, double y, double z) {
return fabs((((x + 4.0) / y) - ((x / 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 = abs((((x + 4.0d0) / y) - ((x / y) * z)))
end function
public static double code(double x, double y, double z) {
return Math.abs((((x + 4.0) / y) - ((x / y) * z)));
}
def code(x, y, z): return math.fabs((((x + 4.0) / y) - ((x / y) * z)))
function code(x, y, z) return abs(Float64(Float64(Float64(x + 4.0) / y) - Float64(Float64(x / y) * z))) end
function tmp = code(x, y, z) tmp = abs((((x + 4.0) / y) - ((x / y) * z))); end
code[x_, y_, z_] := N[Abs[N[(N[(N[(x + 4.0), $MachinePrecision] / y), $MachinePrecision] - N[(N[(x / y), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 14 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z) :precision binary64 (fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))
double code(double x, double y, double z) {
return fabs((((x + 4.0) / y) - ((x / 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 = abs((((x + 4.0d0) / y) - ((x / y) * z)))
end function
public static double code(double x, double y, double z) {
return Math.abs((((x + 4.0) / y) - ((x / y) * z)));
}
def code(x, y, z): return math.fabs((((x + 4.0) / y) - ((x / y) * z)))
function code(x, y, z) return abs(Float64(Float64(Float64(x + 4.0) / y) - Float64(Float64(x / y) * z))) end
function tmp = code(x, y, z) tmp = abs((((x + 4.0) / y) - ((x / y) * z))); end
code[x_, y_, z_] := N[Abs[N[(N[(N[(x + 4.0), $MachinePrecision] / y), $MachinePrecision] - N[(N[(x / y), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\end{array}
(FPCore (x y z) :precision binary64 (if (<= (fabs (- (/ (+ x 4.0) y) (* (/ x y) z))) 2e-45) (fabs (fma (/ 1.0 y) (+ x 4.0) (- 0.0 (/ (* x z) y)))) (fabs (+ (/ 4.0 y) (* (/ x y) (- 1.0 z))))))
double code(double x, double y, double z) {
double tmp;
if (fabs((((x + 4.0) / y) - ((x / y) * z))) <= 2e-45) {
tmp = fabs(fma((1.0 / y), (x + 4.0), (0.0 - ((x * z) / y))));
} else {
tmp = fabs(((4.0 / y) + ((x / y) * (1.0 - z))));
}
return tmp;
}
function code(x, y, z) tmp = 0.0 if (abs(Float64(Float64(Float64(x + 4.0) / y) - Float64(Float64(x / y) * z))) <= 2e-45) tmp = abs(fma(Float64(1.0 / y), Float64(x + 4.0), Float64(0.0 - Float64(Float64(x * z) / y)))); else tmp = abs(Float64(Float64(4.0 / y) + Float64(Float64(x / y) * Float64(1.0 - z)))); end return tmp end
code[x_, y_, z_] := If[LessEqual[N[Abs[N[(N[(N[(x + 4.0), $MachinePrecision] / y), $MachinePrecision] - N[(N[(x / y), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], 2e-45], N[Abs[N[(N[(1.0 / y), $MachinePrecision] * N[(x + 4.0), $MachinePrecision] + N[(0.0 - N[(N[(x * z), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[Abs[N[(N[(4.0 / y), $MachinePrecision] + N[(N[(x / y), $MachinePrecision] * N[(1.0 - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right| \leq 2 \cdot 10^{-45}:\\
\;\;\;\;\left|\mathsf{fma}\left(\frac{1}{y}, x + 4, 0 - \frac{x \cdot z}{y}\right)\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{4}{y} + \frac{x}{y} \cdot \left(1 - z\right)\right|\\
\end{array}
\end{array}
if (fabs.f64 (-.f64 (/.f64 (+.f64 x #s(literal 4 binary64)) y) (*.f64 (/.f64 x y) z))) < 1.99999999999999997e-45Initial program 89.9%
clear-numN/A
associate-/r/N/A
fmm-defN/A
fma-lowering-fma.f64N/A
/-lowering-/.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
neg-sub0N/A
--lowering--.f64N/A
associate-*l/N/A
/-lowering-/.f64N/A
*-lowering-*.f64100.0%
Applied egg-rr100.0%
if 1.99999999999999997e-45 < (fabs.f64 (-.f64 (/.f64 (+.f64 x #s(literal 4 binary64)) y) (*.f64 (/.f64 x y) z))) Initial program 89.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Final simplification99.9%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (fabs (/ z (/ y x)))))
(if (<= x -3.4e+240)
t_0
(if (<= x -850000.0)
(fabs (/ x y))
(if (<= x -2.9e-108)
(fabs (/ (* x z) y))
(if (<= x 2e-46)
(fabs (/ 4.0 y))
(if (<= x 1.05e+22) t_0 (/ x y))))))))
double code(double x, double y, double z) {
double t_0 = fabs((z / (y / x)));
double tmp;
if (x <= -3.4e+240) {
tmp = t_0;
} else if (x <= -850000.0) {
tmp = fabs((x / y));
} else if (x <= -2.9e-108) {
tmp = fabs(((x * z) / y));
} else if (x <= 2e-46) {
tmp = fabs((4.0 / y));
} else if (x <= 1.05e+22) {
tmp = t_0;
} else {
tmp = x / 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 = abs((z / (y / x)))
if (x <= (-3.4d+240)) then
tmp = t_0
else if (x <= (-850000.0d0)) then
tmp = abs((x / y))
else if (x <= (-2.9d-108)) then
tmp = abs(((x * z) / y))
else if (x <= 2d-46) then
tmp = abs((4.0d0 / y))
else if (x <= 1.05d+22) then
tmp = t_0
else
tmp = x / y
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = Math.abs((z / (y / x)));
double tmp;
if (x <= -3.4e+240) {
tmp = t_0;
} else if (x <= -850000.0) {
tmp = Math.abs((x / y));
} else if (x <= -2.9e-108) {
tmp = Math.abs(((x * z) / y));
} else if (x <= 2e-46) {
tmp = Math.abs((4.0 / y));
} else if (x <= 1.05e+22) {
tmp = t_0;
} else {
tmp = x / y;
}
return tmp;
}
def code(x, y, z): t_0 = math.fabs((z / (y / x))) tmp = 0 if x <= -3.4e+240: tmp = t_0 elif x <= -850000.0: tmp = math.fabs((x / y)) elif x <= -2.9e-108: tmp = math.fabs(((x * z) / y)) elif x <= 2e-46: tmp = math.fabs((4.0 / y)) elif x <= 1.05e+22: tmp = t_0 else: tmp = x / y return tmp
function code(x, y, z) t_0 = abs(Float64(z / Float64(y / x))) tmp = 0.0 if (x <= -3.4e+240) tmp = t_0; elseif (x <= -850000.0) tmp = abs(Float64(x / y)); elseif (x <= -2.9e-108) tmp = abs(Float64(Float64(x * z) / y)); elseif (x <= 2e-46) tmp = abs(Float64(4.0 / y)); elseif (x <= 1.05e+22) tmp = t_0; else tmp = Float64(x / y); end return tmp end
function tmp_2 = code(x, y, z) t_0 = abs((z / (y / x))); tmp = 0.0; if (x <= -3.4e+240) tmp = t_0; elseif (x <= -850000.0) tmp = abs((x / y)); elseif (x <= -2.9e-108) tmp = abs(((x * z) / y)); elseif (x <= 2e-46) tmp = abs((4.0 / y)); elseif (x <= 1.05e+22) tmp = t_0; else tmp = x / y; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[Abs[N[(z / N[(y / x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[x, -3.4e+240], t$95$0, If[LessEqual[x, -850000.0], N[Abs[N[(x / y), $MachinePrecision]], $MachinePrecision], If[LessEqual[x, -2.9e-108], N[Abs[N[(N[(x * z), $MachinePrecision] / y), $MachinePrecision]], $MachinePrecision], If[LessEqual[x, 2e-46], N[Abs[N[(4.0 / y), $MachinePrecision]], $MachinePrecision], If[LessEqual[x, 1.05e+22], t$95$0, N[(x / y), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left|\frac{z}{\frac{y}{x}}\right|\\
\mathbf{if}\;x \leq -3.4 \cdot 10^{+240}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;x \leq -850000:\\
\;\;\;\;\left|\frac{x}{y}\right|\\
\mathbf{elif}\;x \leq -2.9 \cdot 10^{-108}:\\
\;\;\;\;\left|\frac{x \cdot z}{y}\right|\\
\mathbf{elif}\;x \leq 2 \cdot 10^{-46}:\\
\;\;\;\;\left|\frac{4}{y}\right|\\
\mathbf{elif}\;x \leq 1.05 \cdot 10^{+22}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{y}\\
\end{array}
\end{array}
if x < -3.40000000000000008e240 or 2.00000000000000005e-46 < x < 1.0499999999999999e22Initial program 86.1%
Taylor expanded in x around inf
/-lowering-/.f6479.6%
Simplified79.6%
fabs-subN/A
fabs-lowering-fabs.f64N/A
*-commutativeN/A
clear-numN/A
div-invN/A
clear-numN/A
sub-divN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
/-lowering-/.f6493.4%
Applied egg-rr93.4%
Taylor expanded in z around inf
Simplified83.6%
if -3.40000000000000008e240 < x < -8.5e5Initial program 91.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6491.2%
Simplified91.2%
Taylor expanded in z around 0
/-lowering-/.f6470.7%
Simplified70.7%
if -8.5e5 < x < -2.9000000000000001e-108Initial program 91.3%
Taylor expanded in x around inf
/-lowering-/.f6466.0%
Simplified66.0%
fabs-subN/A
fabs-lowering-fabs.f64N/A
*-commutativeN/A
clear-numN/A
div-invN/A
clear-numN/A
sub-divN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
/-lowering-/.f6465.9%
Applied egg-rr65.9%
Taylor expanded in z around inf
/-lowering-/.f64N/A
*-lowering-*.f6473.6%
Simplified73.6%
if -2.9000000000000001e-108 < x < 2.00000000000000005e-46Initial program 95.1%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified95.1%
Taylor expanded in x around 0
/-lowering-/.f6484.0%
Simplified84.0%
if 1.0499999999999999e22 < x Initial program 80.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6493.5%
Simplified93.5%
Taylor expanded in z around 0
/-lowering-/.f6476.4%
Simplified76.4%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f6476.3%
Applied egg-rr76.3%
associate-/r/N/A
inv-powN/A
sqr-powN/A
fabs-sqrN/A
sqr-powN/A
inv-powN/A
clear-numN/A
/-lowering-/.f6432.0%
Applied egg-rr32.0%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (fabs (/ z (/ y x)))))
(if (<= x -8.6e+236)
t_0
(if (<= x -900000.0)
(fabs (/ x y))
(if (<= x -2.85e-35)
t_0
(if (<= x 8.6e-44)
(fabs (/ 4.0 y))
(if (<= x 7.8e+22) t_0 (/ x y))))))))
double code(double x, double y, double z) {
double t_0 = fabs((z / (y / x)));
double tmp;
if (x <= -8.6e+236) {
tmp = t_0;
} else if (x <= -900000.0) {
tmp = fabs((x / y));
} else if (x <= -2.85e-35) {
tmp = t_0;
} else if (x <= 8.6e-44) {
tmp = fabs((4.0 / y));
} else if (x <= 7.8e+22) {
tmp = t_0;
} else {
tmp = x / 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 = abs((z / (y / x)))
if (x <= (-8.6d+236)) then
tmp = t_0
else if (x <= (-900000.0d0)) then
tmp = abs((x / y))
else if (x <= (-2.85d-35)) then
tmp = t_0
else if (x <= 8.6d-44) then
tmp = abs((4.0d0 / y))
else if (x <= 7.8d+22) then
tmp = t_0
else
tmp = x / y
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = Math.abs((z / (y / x)));
double tmp;
if (x <= -8.6e+236) {
tmp = t_0;
} else if (x <= -900000.0) {
tmp = Math.abs((x / y));
} else if (x <= -2.85e-35) {
tmp = t_0;
} else if (x <= 8.6e-44) {
tmp = Math.abs((4.0 / y));
} else if (x <= 7.8e+22) {
tmp = t_0;
} else {
tmp = x / y;
}
return tmp;
}
def code(x, y, z): t_0 = math.fabs((z / (y / x))) tmp = 0 if x <= -8.6e+236: tmp = t_0 elif x <= -900000.0: tmp = math.fabs((x / y)) elif x <= -2.85e-35: tmp = t_0 elif x <= 8.6e-44: tmp = math.fabs((4.0 / y)) elif x <= 7.8e+22: tmp = t_0 else: tmp = x / y return tmp
function code(x, y, z) t_0 = abs(Float64(z / Float64(y / x))) tmp = 0.0 if (x <= -8.6e+236) tmp = t_0; elseif (x <= -900000.0) tmp = abs(Float64(x / y)); elseif (x <= -2.85e-35) tmp = t_0; elseif (x <= 8.6e-44) tmp = abs(Float64(4.0 / y)); elseif (x <= 7.8e+22) tmp = t_0; else tmp = Float64(x / y); end return tmp end
function tmp_2 = code(x, y, z) t_0 = abs((z / (y / x))); tmp = 0.0; if (x <= -8.6e+236) tmp = t_0; elseif (x <= -900000.0) tmp = abs((x / y)); elseif (x <= -2.85e-35) tmp = t_0; elseif (x <= 8.6e-44) tmp = abs((4.0 / y)); elseif (x <= 7.8e+22) tmp = t_0; else tmp = x / y; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[Abs[N[(z / N[(y / x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[x, -8.6e+236], t$95$0, If[LessEqual[x, -900000.0], N[Abs[N[(x / y), $MachinePrecision]], $MachinePrecision], If[LessEqual[x, -2.85e-35], t$95$0, If[LessEqual[x, 8.6e-44], N[Abs[N[(4.0 / y), $MachinePrecision]], $MachinePrecision], If[LessEqual[x, 7.8e+22], t$95$0, N[(x / y), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left|\frac{z}{\frac{y}{x}}\right|\\
\mathbf{if}\;x \leq -8.6 \cdot 10^{+236}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;x \leq -900000:\\
\;\;\;\;\left|\frac{x}{y}\right|\\
\mathbf{elif}\;x \leq -2.85 \cdot 10^{-35}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;x \leq 8.6 \cdot 10^{-44}:\\
\;\;\;\;\left|\frac{4}{y}\right|\\
\mathbf{elif}\;x \leq 7.8 \cdot 10^{+22}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{y}\\
\end{array}
\end{array}
if x < -8.5999999999999997e236 or -9e5 < x < -2.8500000000000001e-35 or 8.60000000000000027e-44 < x < 7.80000000000000042e22Initial program 89.9%
Taylor expanded in x around inf
/-lowering-/.f6482.9%
Simplified82.9%
fabs-subN/A
fabs-lowering-fabs.f64N/A
*-commutativeN/A
clear-numN/A
div-invN/A
clear-numN/A
sub-divN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
/-lowering-/.f6492.9%
Applied egg-rr92.9%
Taylor expanded in z around inf
Simplified85.6%
if -8.5999999999999997e236 < x < -9e5Initial program 91.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6491.2%
Simplified91.2%
Taylor expanded in z around 0
/-lowering-/.f6470.7%
Simplified70.7%
if -2.8500000000000001e-35 < x < 8.60000000000000027e-44Initial program 93.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified93.9%
Taylor expanded in x around 0
/-lowering-/.f6480.4%
Simplified80.4%
if 7.80000000000000042e22 < x Initial program 80.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6493.5%
Simplified93.5%
Taylor expanded in z around 0
/-lowering-/.f6476.4%
Simplified76.4%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f6476.3%
Applied egg-rr76.3%
associate-/r/N/A
inv-powN/A
sqr-powN/A
fabs-sqrN/A
sqr-powN/A
inv-powN/A
clear-numN/A
/-lowering-/.f6432.0%
Applied egg-rr32.0%
(FPCore (x y z) :precision binary64 (let* ((t_0 (fabs (/ x (/ y (- 1.0 z)))))) (if (<= x -180.0) t_0 (if (<= x 4.0) (fabs (/ (- 4.0 (* x z)) y)) t_0))))
double code(double x, double y, double z) {
double t_0 = fabs((x / (y / (1.0 - z))));
double tmp;
if (x <= -180.0) {
tmp = t_0;
} else if (x <= 4.0) {
tmp = fabs(((4.0 - (x * z)) / y));
} else {
tmp = t_0;
}
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 = abs((x / (y / (1.0d0 - z))))
if (x <= (-180.0d0)) then
tmp = t_0
else if (x <= 4.0d0) then
tmp = abs(((4.0d0 - (x * z)) / y))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = Math.abs((x / (y / (1.0 - z))));
double tmp;
if (x <= -180.0) {
tmp = t_0;
} else if (x <= 4.0) {
tmp = Math.abs(((4.0 - (x * z)) / y));
} else {
tmp = t_0;
}
return tmp;
}
def code(x, y, z): t_0 = math.fabs((x / (y / (1.0 - z)))) tmp = 0 if x <= -180.0: tmp = t_0 elif x <= 4.0: tmp = math.fabs(((4.0 - (x * z)) / y)) else: tmp = t_0 return tmp
function code(x, y, z) t_0 = abs(Float64(x / Float64(y / Float64(1.0 - z)))) tmp = 0.0 if (x <= -180.0) tmp = t_0; elseif (x <= 4.0) tmp = abs(Float64(Float64(4.0 - Float64(x * z)) / y)); else tmp = t_0; end return tmp end
function tmp_2 = code(x, y, z) t_0 = abs((x / (y / (1.0 - z)))); tmp = 0.0; if (x <= -180.0) tmp = t_0; elseif (x <= 4.0) tmp = abs(((4.0 - (x * z)) / y)); else tmp = t_0; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[Abs[N[(x / N[(y / N[(1.0 - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[x, -180.0], t$95$0, If[LessEqual[x, 4.0], N[Abs[N[(N[(4.0 - N[(x * z), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left|\frac{x}{\frac{y}{1 - z}}\right|\\
\mathbf{if}\;x \leq -180:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;x \leq 4:\\
\;\;\;\;\left|\frac{4 - x \cdot z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if x < -180 or 4 < x Initial program 85.6%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6492.4%
Simplified92.4%
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f6498.0%
Applied egg-rr98.0%
associate-*r/N/A
associate-*l/N/A
clear-numN/A
associate-*l/N/A
metadata-evalN/A
associate-/r/N/A
remove-double-divN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
--lowering--.f6498.0%
Applied egg-rr98.0%
if -180 < x < 4Initial program 94.6%
fabs-lowering-fabs.f64N/A
associate-*l/N/A
sub-divN/A
flip3-+N/A
div-invN/A
fmm-defN/A
*-commutativeN/A
/-lowering-/.f64N/A
Applied egg-rr99.9%
Taylor expanded in x around 0
Simplified99.4%
(FPCore (x y z) :precision binary64 (let* ((t_0 (fabs (/ x (/ y (- 1.0 z)))))) (if (<= x -3.4e-108) t_0 (if (<= x 2.2e-44) (fabs (/ 4.0 y)) t_0))))
double code(double x, double y, double z) {
double t_0 = fabs((x / (y / (1.0 - z))));
double tmp;
if (x <= -3.4e-108) {
tmp = t_0;
} else if (x <= 2.2e-44) {
tmp = fabs((4.0 / y));
} else {
tmp = t_0;
}
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 = abs((x / (y / (1.0d0 - z))))
if (x <= (-3.4d-108)) then
tmp = t_0
else if (x <= 2.2d-44) then
tmp = abs((4.0d0 / y))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = Math.abs((x / (y / (1.0 - z))));
double tmp;
if (x <= -3.4e-108) {
tmp = t_0;
} else if (x <= 2.2e-44) {
tmp = Math.abs((4.0 / y));
} else {
tmp = t_0;
}
return tmp;
}
def code(x, y, z): t_0 = math.fabs((x / (y / (1.0 - z)))) tmp = 0 if x <= -3.4e-108: tmp = t_0 elif x <= 2.2e-44: tmp = math.fabs((4.0 / y)) else: tmp = t_0 return tmp
function code(x, y, z) t_0 = abs(Float64(x / Float64(y / Float64(1.0 - z)))) tmp = 0.0 if (x <= -3.4e-108) tmp = t_0; elseif (x <= 2.2e-44) tmp = abs(Float64(4.0 / y)); else tmp = t_0; end return tmp end
function tmp_2 = code(x, y, z) t_0 = abs((x / (y / (1.0 - z)))); tmp = 0.0; if (x <= -3.4e-108) tmp = t_0; elseif (x <= 2.2e-44) tmp = abs((4.0 / y)); else tmp = t_0; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[Abs[N[(x / N[(y / N[(1.0 - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[x, -3.4e-108], t$95$0, If[LessEqual[x, 2.2e-44], N[Abs[N[(4.0 / y), $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left|\frac{x}{\frac{y}{1 - z}}\right|\\
\mathbf{if}\;x \leq -3.4 \cdot 10^{-108}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;x \leq 2.2 \cdot 10^{-44}:\\
\;\;\;\;\left|\frac{4}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if x < -3.40000000000000002e-108 or 2.20000000000000012e-44 < x Initial program 86.7%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified98.7%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6489.5%
Simplified89.5%
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f6493.0%
Applied egg-rr93.0%
associate-*r/N/A
associate-*l/N/A
clear-numN/A
associate-*l/N/A
metadata-evalN/A
associate-/r/N/A
remove-double-divN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
--lowering--.f6494.2%
Applied egg-rr94.2%
if -3.40000000000000002e-108 < x < 2.20000000000000012e-44Initial program 95.1%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified95.1%
Taylor expanded in x around 0
/-lowering-/.f6484.0%
Simplified84.0%
(FPCore (x y z) :precision binary64 (if (<= x -3.4e-108) (fabs (* x (/ (- 1.0 z) y))) (if (<= x 3.1e-44) (fabs (/ 4.0 y)) (fabs (* (/ x y) (- 1.0 z))))))
double code(double x, double y, double z) {
double tmp;
if (x <= -3.4e-108) {
tmp = fabs((x * ((1.0 - z) / y)));
} else if (x <= 3.1e-44) {
tmp = fabs((4.0 / y));
} else {
tmp = fabs(((x / y) * (1.0 - z)));
}
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 <= (-3.4d-108)) then
tmp = abs((x * ((1.0d0 - z) / y)))
else if (x <= 3.1d-44) then
tmp = abs((4.0d0 / y))
else
tmp = abs(((x / y) * (1.0d0 - z)))
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if (x <= -3.4e-108) {
tmp = Math.abs((x * ((1.0 - z) / y)));
} else if (x <= 3.1e-44) {
tmp = Math.abs((4.0 / y));
} else {
tmp = Math.abs(((x / y) * (1.0 - z)));
}
return tmp;
}
def code(x, y, z): tmp = 0 if x <= -3.4e-108: tmp = math.fabs((x * ((1.0 - z) / y))) elif x <= 3.1e-44: tmp = math.fabs((4.0 / y)) else: tmp = math.fabs(((x / y) * (1.0 - z))) return tmp
function code(x, y, z) tmp = 0.0 if (x <= -3.4e-108) tmp = abs(Float64(x * Float64(Float64(1.0 - z) / y))); elseif (x <= 3.1e-44) tmp = abs(Float64(4.0 / y)); else tmp = abs(Float64(Float64(x / y) * Float64(1.0 - z))); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if (x <= -3.4e-108) tmp = abs((x * ((1.0 - z) / y))); elseif (x <= 3.1e-44) tmp = abs((4.0 / y)); else tmp = abs(((x / y) * (1.0 - z))); end tmp_2 = tmp; end
code[x_, y_, z_] := If[LessEqual[x, -3.4e-108], N[Abs[N[(x * N[(N[(1.0 - z), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[x, 3.1e-44], N[Abs[N[(4.0 / y), $MachinePrecision]], $MachinePrecision], N[Abs[N[(N[(x / y), $MachinePrecision] * N[(1.0 - z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -3.4 \cdot 10^{-108}:\\
\;\;\;\;\left|x \cdot \frac{1 - z}{y}\right|\\
\mathbf{elif}\;x \leq 3.1 \cdot 10^{-44}:\\
\;\;\;\;\left|\frac{4}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x}{y} \cdot \left(1 - z\right)\right|\\
\end{array}
\end{array}
if x < -3.40000000000000002e-108Initial program 88.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified97.8%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6487.8%
Simplified87.8%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
--lowering--.f6491.8%
Applied egg-rr91.8%
if -3.40000000000000002e-108 < x < 3.09999999999999984e-44Initial program 95.1%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified95.1%
Taylor expanded in x around 0
/-lowering-/.f6484.0%
Simplified84.0%
if 3.09999999999999984e-44 < x Initial program 83.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.8%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6491.7%
Simplified91.7%
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f6497.1%
Applied egg-rr97.1%
Final simplification90.3%
(FPCore (x y z) :precision binary64 (let* ((t_0 (fabs (* (/ x y) (- 1.0 z))))) (if (<= x -1.9e-37) t_0 (if (<= x 1.55e-47) (fabs (/ 4.0 y)) t_0))))
double code(double x, double y, double z) {
double t_0 = fabs(((x / y) * (1.0 - z)));
double tmp;
if (x <= -1.9e-37) {
tmp = t_0;
} else if (x <= 1.55e-47) {
tmp = fabs((4.0 / y));
} else {
tmp = t_0;
}
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 = abs(((x / y) * (1.0d0 - z)))
if (x <= (-1.9d-37)) then
tmp = t_0
else if (x <= 1.55d-47) then
tmp = abs((4.0d0 / y))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = Math.abs(((x / y) * (1.0 - z)));
double tmp;
if (x <= -1.9e-37) {
tmp = t_0;
} else if (x <= 1.55e-47) {
tmp = Math.abs((4.0 / y));
} else {
tmp = t_0;
}
return tmp;
}
def code(x, y, z): t_0 = math.fabs(((x / y) * (1.0 - z))) tmp = 0 if x <= -1.9e-37: tmp = t_0 elif x <= 1.55e-47: tmp = math.fabs((4.0 / y)) else: tmp = t_0 return tmp
function code(x, y, z) t_0 = abs(Float64(Float64(x / y) * Float64(1.0 - z))) tmp = 0.0 if (x <= -1.9e-37) tmp = t_0; elseif (x <= 1.55e-47) tmp = abs(Float64(4.0 / y)); else tmp = t_0; end return tmp end
function tmp_2 = code(x, y, z) t_0 = abs(((x / y) * (1.0 - z))); tmp = 0.0; if (x <= -1.9e-37) tmp = t_0; elseif (x <= 1.55e-47) tmp = abs((4.0 / y)); else tmp = t_0; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[Abs[N[(N[(x / y), $MachinePrecision] * N[(1.0 - z), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[x, -1.9e-37], t$95$0, If[LessEqual[x, 1.55e-47], N[Abs[N[(4.0 / y), $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left|\frac{x}{y} \cdot \left(1 - z\right)\right|\\
\mathbf{if}\;x \leq -1.9 \cdot 10^{-37}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;x \leq 1.55 \cdot 10^{-47}:\\
\;\;\;\;\left|\frac{4}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if x < -1.9000000000000002e-37 or 1.5499999999999999e-47 < x Initial program 87.0%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6491.9%
Simplified91.9%
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f6497.0%
Applied egg-rr97.0%
if -1.9000000000000002e-37 < x < 1.5499999999999999e-47Initial program 93.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified93.9%
Taylor expanded in x around 0
/-lowering-/.f6480.4%
Simplified80.4%
Final simplification90.0%
(FPCore (x y z) :precision binary64 (if (<= y 4e+100) (fabs (/ (- (+ x 4.0) (* x z)) y)) (fabs (- (/ (+ x 4.0) y) (* x (/ z y))))))
double code(double x, double y, double z) {
double tmp;
if (y <= 4e+100) {
tmp = fabs((((x + 4.0) - (x * z)) / y));
} else {
tmp = fabs((((x + 4.0) / y) - (x * (z / 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 <= 4d+100) then
tmp = abs((((x + 4.0d0) - (x * z)) / y))
else
tmp = abs((((x + 4.0d0) / y) - (x * (z / y))))
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if (y <= 4e+100) {
tmp = Math.abs((((x + 4.0) - (x * z)) / y));
} else {
tmp = Math.abs((((x + 4.0) / y) - (x * (z / y))));
}
return tmp;
}
def code(x, y, z): tmp = 0 if y <= 4e+100: tmp = math.fabs((((x + 4.0) - (x * z)) / y)) else: tmp = math.fabs((((x + 4.0) / y) - (x * (z / y)))) return tmp
function code(x, y, z) tmp = 0.0 if (y <= 4e+100) tmp = abs(Float64(Float64(Float64(x + 4.0) - Float64(x * z)) / y)); else tmp = abs(Float64(Float64(Float64(x + 4.0) / y) - Float64(x * Float64(z / y)))); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if (y <= 4e+100) tmp = abs((((x + 4.0) - (x * z)) / y)); else tmp = abs((((x + 4.0) / y) - (x * (z / y)))); end tmp_2 = tmp; end
code[x_, y_, z_] := If[LessEqual[y, 4e+100], N[Abs[N[(N[(N[(x + 4.0), $MachinePrecision] - N[(x * z), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]], $MachinePrecision], N[Abs[N[(N[(N[(x + 4.0), $MachinePrecision] / y), $MachinePrecision] - N[(x * N[(z / y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y \leq 4 \cdot 10^{+100}:\\
\;\;\;\;\left|\frac{\left(x + 4\right) - x \cdot z}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x + 4}{y} - x \cdot \frac{z}{y}\right|\\
\end{array}
\end{array}
if y < 4.00000000000000006e100Initial program 89.7%
fabs-lowering-fabs.f64N/A
associate-*l/N/A
sub-divN/A
flip3-+N/A
div-invN/A
fmm-defN/A
*-commutativeN/A
/-lowering-/.f64N/A
Applied egg-rr98.3%
if 4.00000000000000006e100 < y Initial program 91.5%
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f6499.8%
Applied egg-rr99.8%
Final simplification98.5%
(FPCore (x y z) :precision binary64 (if (<= z -2.7e+54) (fabs (/ z (/ y x))) (if (<= z 1.25e+19) (fabs (/ (+ x 4.0) y)) (fabs (/ (* x z) y)))))
double code(double x, double y, double z) {
double tmp;
if (z <= -2.7e+54) {
tmp = fabs((z / (y / x)));
} else if (z <= 1.25e+19) {
tmp = fabs(((x + 4.0) / y));
} else {
tmp = fabs(((x * z) / 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 (z <= (-2.7d+54)) then
tmp = abs((z / (y / x)))
else if (z <= 1.25d+19) then
tmp = abs(((x + 4.0d0) / y))
else
tmp = abs(((x * z) / y))
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if (z <= -2.7e+54) {
tmp = Math.abs((z / (y / x)));
} else if (z <= 1.25e+19) {
tmp = Math.abs(((x + 4.0) / y));
} else {
tmp = Math.abs(((x * z) / y));
}
return tmp;
}
def code(x, y, z): tmp = 0 if z <= -2.7e+54: tmp = math.fabs((z / (y / x))) elif z <= 1.25e+19: tmp = math.fabs(((x + 4.0) / y)) else: tmp = math.fabs(((x * z) / y)) return tmp
function code(x, y, z) tmp = 0.0 if (z <= -2.7e+54) tmp = abs(Float64(z / Float64(y / x))); elseif (z <= 1.25e+19) tmp = abs(Float64(Float64(x + 4.0) / y)); else tmp = abs(Float64(Float64(x * z) / y)); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if (z <= -2.7e+54) tmp = abs((z / (y / x))); elseif (z <= 1.25e+19) tmp = abs(((x + 4.0) / y)); else tmp = abs(((x * z) / y)); end tmp_2 = tmp; end
code[x_, y_, z_] := If[LessEqual[z, -2.7e+54], N[Abs[N[(z / N[(y / x), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[z, 1.25e+19], N[Abs[N[(N[(x + 4.0), $MachinePrecision] / y), $MachinePrecision]], $MachinePrecision], N[Abs[N[(N[(x * z), $MachinePrecision] / y), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -2.7 \cdot 10^{+54}:\\
\;\;\;\;\left|\frac{z}{\frac{y}{x}}\right|\\
\mathbf{elif}\;z \leq 1.25 \cdot 10^{+19}:\\
\;\;\;\;\left|\frac{x + 4}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\left|\frac{x \cdot z}{y}\right|\\
\end{array}
\end{array}
if z < -2.70000000000000011e54Initial program 94.2%
Taylor expanded in x around inf
/-lowering-/.f6473.5%
Simplified73.5%
fabs-subN/A
fabs-lowering-fabs.f64N/A
*-commutativeN/A
clear-numN/A
div-invN/A
clear-numN/A
sub-divN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
/-lowering-/.f6473.5%
Applied egg-rr73.5%
Taylor expanded in z around inf
Simplified73.5%
if -2.70000000000000011e54 < z < 1.25e19Initial program 94.3%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified100.0%
Taylor expanded in z around 0
*-rgt-identityN/A
associate-*r/N/A
distribute-rgt-outN/A
associate-*l/N/A
metadata-evalN/A
distribute-lft-neg-inN/A
distribute-frac-negN/A
mul-1-negN/A
distribute-frac-negN/A
remove-double-negN/A
/-lowering-/.f64N/A
+-lowering-+.f6497.8%
Simplified97.8%
if 1.25e19 < z Initial program 71.5%
Taylor expanded in x around inf
/-lowering-/.f6458.4%
Simplified58.4%
fabs-subN/A
fabs-lowering-fabs.f64N/A
*-commutativeN/A
clear-numN/A
div-invN/A
clear-numN/A
sub-divN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
/-lowering-/.f6481.0%
Applied egg-rr81.0%
Taylor expanded in z around inf
/-lowering-/.f64N/A
*-lowering-*.f6481.1%
Simplified81.1%
Final simplification88.5%
(FPCore (x y z) :precision binary64 (if (<= x -1.5) (fabs (/ x y)) (if (<= x 4.0) (fabs (/ 4.0 y)) (/ x y))))
double code(double x, double y, double z) {
double tmp;
if (x <= -1.5) {
tmp = fabs((x / y));
} else if (x <= 4.0) {
tmp = fabs((4.0 / y));
} else {
tmp = x / 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 (x <= (-1.5d0)) then
tmp = abs((x / y))
else if (x <= 4.0d0) then
tmp = abs((4.0d0 / y))
else
tmp = x / y
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if (x <= -1.5) {
tmp = Math.abs((x / y));
} else if (x <= 4.0) {
tmp = Math.abs((4.0 / y));
} else {
tmp = x / y;
}
return tmp;
}
def code(x, y, z): tmp = 0 if x <= -1.5: tmp = math.fabs((x / y)) elif x <= 4.0: tmp = math.fabs((4.0 / y)) else: tmp = x / y return tmp
function code(x, y, z) tmp = 0.0 if (x <= -1.5) tmp = abs(Float64(x / y)); elseif (x <= 4.0) tmp = abs(Float64(4.0 / y)); else tmp = Float64(x / y); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if (x <= -1.5) tmp = abs((x / y)); elseif (x <= 4.0) tmp = abs((4.0 / y)); else tmp = x / y; end tmp_2 = tmp; end
code[x_, y_, z_] := If[LessEqual[x, -1.5], N[Abs[N[(x / y), $MachinePrecision]], $MachinePrecision], If[LessEqual[x, 4.0], N[Abs[N[(4.0 / y), $MachinePrecision]], $MachinePrecision], N[(x / y), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.5:\\
\;\;\;\;\left|\frac{x}{y}\right|\\
\mathbf{elif}\;x \leq 4:\\
\;\;\;\;\left|\frac{4}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{y}\\
\end{array}
\end{array}
if x < -1.5Initial program 88.3%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6492.3%
Simplified92.3%
Taylor expanded in z around 0
/-lowering-/.f6466.8%
Simplified66.8%
if -1.5 < x < 4Initial program 94.5%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified94.5%
Taylor expanded in x around 0
/-lowering-/.f6472.8%
Simplified72.8%
if 4 < x Initial program 83.0%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6492.6%
Simplified92.6%
Taylor expanded in z around 0
/-lowering-/.f6470.2%
Simplified70.2%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f6470.1%
Applied egg-rr70.1%
associate-/r/N/A
inv-powN/A
sqr-powN/A
fabs-sqrN/A
sqr-powN/A
inv-powN/A
clear-numN/A
/-lowering-/.f6430.0%
Applied egg-rr30.0%
(FPCore (x y z) :precision binary64 (fabs (+ (/ 4.0 y) (* (/ x y) (- 1.0 z)))))
double code(double x, double y, double z) {
return fabs(((4.0 / y) + ((x / y) * (1.0 - z))));
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = abs(((4.0d0 / y) + ((x / y) * (1.0d0 - z))))
end function
public static double code(double x, double y, double z) {
return Math.abs(((4.0 / y) + ((x / y) * (1.0 - z))));
}
def code(x, y, z): return math.fabs(((4.0 / y) + ((x / y) * (1.0 - z))))
function code(x, y, z) return abs(Float64(Float64(4.0 / y) + Float64(Float64(x / y) * Float64(1.0 - z)))) end
function tmp = code(x, y, z) tmp = abs(((4.0 / y) + ((x / y) * (1.0 - z)))); end
code[x_, y_, z_] := N[Abs[N[(N[(4.0 / y), $MachinePrecision] + N[(N[(x / y), $MachinePrecision] * N[(1.0 - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
\left|\frac{4}{y} + \frac{x}{y} \cdot \left(1 - z\right)\right|
\end{array}
Initial program 89.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified97.3%
(FPCore (x y z) :precision binary64 (fabs (/ (- (+ x 4.0) (* x z)) y)))
double code(double x, double y, double z) {
return fabs((((x + 4.0) - (x * z)) / y));
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = abs((((x + 4.0d0) - (x * z)) / y))
end function
public static double code(double x, double y, double z) {
return Math.abs((((x + 4.0) - (x * z)) / y));
}
def code(x, y, z): return math.fabs((((x + 4.0) - (x * z)) / y))
function code(x, y, z) return abs(Float64(Float64(Float64(x + 4.0) - Float64(x * z)) / y)) end
function tmp = code(x, y, z) tmp = abs((((x + 4.0) - (x * z)) / y)); end
code[x_, y_, z_] := N[Abs[N[(N[(N[(x + 4.0), $MachinePrecision] - N[(x * z), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]], $MachinePrecision]
\begin{array}{l}
\\
\left|\frac{\left(x + 4\right) - x \cdot z}{y}\right|
\end{array}
Initial program 89.9%
fabs-lowering-fabs.f64N/A
associate-*l/N/A
sub-divN/A
flip3-+N/A
div-invN/A
fmm-defN/A
*-commutativeN/A
/-lowering-/.f64N/A
Applied egg-rr97.0%
Final simplification97.0%
(FPCore (x y z) :precision binary64 (if (<= x 4.0) (fabs (/ 4.0 y)) (/ x y)))
double code(double x, double y, double z) {
double tmp;
if (x <= 4.0) {
tmp = fabs((4.0 / y));
} else {
tmp = x / 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 (x <= 4.0d0) then
tmp = abs((4.0d0 / y))
else
tmp = x / y
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if (x <= 4.0) {
tmp = Math.abs((4.0 / y));
} else {
tmp = x / y;
}
return tmp;
}
def code(x, y, z): tmp = 0 if x <= 4.0: tmp = math.fabs((4.0 / y)) else: tmp = x / y return tmp
function code(x, y, z) tmp = 0.0 if (x <= 4.0) tmp = abs(Float64(4.0 / y)); else tmp = Float64(x / y); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if (x <= 4.0) tmp = abs((4.0 / y)); else tmp = x / y; end tmp_2 = tmp; end
code[x_, y_, z_] := If[LessEqual[x, 4.0], N[Abs[N[(4.0 / y), $MachinePrecision]], $MachinePrecision], N[(x / y), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq 4:\\
\;\;\;\;\left|\frac{4}{y}\right|\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{y}\\
\end{array}
\end{array}
if x < 4Initial program 92.3%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified96.5%
Taylor expanded in x around 0
/-lowering-/.f6448.4%
Simplified48.4%
if 4 < x Initial program 83.0%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified99.9%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6492.6%
Simplified92.6%
Taylor expanded in z around 0
/-lowering-/.f6470.2%
Simplified70.2%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f6470.1%
Applied egg-rr70.1%
associate-/r/N/A
inv-powN/A
sqr-powN/A
fabs-sqrN/A
sqr-powN/A
inv-powN/A
clear-numN/A
/-lowering-/.f6430.0%
Applied egg-rr30.0%
(FPCore (x y z) :precision binary64 (/ x y))
double code(double x, double y, double z) {
return x / y;
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = x / y
end function
public static double code(double x, double y, double z) {
return x / y;
}
def code(x, y, z): return x / y
function code(x, y, z) return Float64(x / y) end
function tmp = code(x, y, z) tmp = x / y; end
code[x_, y_, z_] := N[(x / y), $MachinePrecision]
\begin{array}{l}
\\
\frac{x}{y}
\end{array}
Initial program 89.9%
fabs-lowering-fabs.f64N/A
sub-negN/A
+-commutativeN/A
neg-sub0N/A
associate-+l-N/A
sub0-negN/A
neg-mul-1N/A
distribute-rgt-out--N/A
*-commutativeN/A
neg-mul-1N/A
associate-*l/N/A
*-commutativeN/A
neg-mul-1N/A
distribute-neg-inN/A
sub-negN/A
div-subN/A
distribute-neg-fracN/A
associate--r-N/A
+-commutativeN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
sub-negN/A
Simplified97.3%
Taylor expanded in x around inf
div-subN/A
associate-/l*N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
--lowering--.f6463.4%
Simplified63.4%
Taylor expanded in z around 0
/-lowering-/.f6438.3%
Simplified38.3%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
/-lowering-/.f6438.3%
Applied egg-rr38.3%
associate-/r/N/A
inv-powN/A
sqr-powN/A
fabs-sqrN/A
sqr-powN/A
inv-powN/A
clear-numN/A
/-lowering-/.f6418.0%
Applied egg-rr18.0%
herbie shell --seed 2024138
(FPCore (x y z)
:name "fabs fraction 1"
:precision binary64
(fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))