
(FPCore (x y z) :precision binary64 (+ x (* (* (- y x) 6.0) (- (/ 2.0 3.0) z))))
double code(double x, double y, double z) {
return x + (((y - x) * 6.0) * ((2.0 / 3.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 = x + (((y - x) * 6.0d0) * ((2.0d0 / 3.0d0) - z))
end function
public static double code(double x, double y, double z) {
return x + (((y - x) * 6.0) * ((2.0 / 3.0) - z));
}
def code(x, y, z): return x + (((y - x) * 6.0) * ((2.0 / 3.0) - z))
function code(x, y, z) return Float64(x + Float64(Float64(Float64(y - x) * 6.0) * Float64(Float64(2.0 / 3.0) - z))) end
function tmp = code(x, y, z) tmp = x + (((y - x) * 6.0) * ((2.0 / 3.0) - z)); end
code[x_, y_, z_] := N[(x + N[(N[(N[(y - x), $MachinePrecision] * 6.0), $MachinePrecision] * N[(N[(2.0 / 3.0), $MachinePrecision] - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 15 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z) :precision binary64 (+ x (* (* (- y x) 6.0) (- (/ 2.0 3.0) z))))
double code(double x, double y, double z) {
return x + (((y - x) * 6.0) * ((2.0 / 3.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 = x + (((y - x) * 6.0d0) * ((2.0d0 / 3.0d0) - z))
end function
public static double code(double x, double y, double z) {
return x + (((y - x) * 6.0) * ((2.0 / 3.0) - z));
}
def code(x, y, z): return x + (((y - x) * 6.0) * ((2.0 / 3.0) - z))
function code(x, y, z) return Float64(x + Float64(Float64(Float64(y - x) * 6.0) * Float64(Float64(2.0 / 3.0) - z))) end
function tmp = code(x, y, z) tmp = x + (((y - x) * 6.0) * ((2.0 / 3.0) - z)); end
code[x_, y_, z_] := N[(x + N[(N[(N[(y - x), $MachinePrecision] * 6.0), $MachinePrecision] * N[(N[(2.0 / 3.0), $MachinePrecision] - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(\frac{2}{3} - z\right)
\end{array}
(FPCore (x y z) :precision binary64 (fma (- y x) (fma z -6.0 4.0) x))
double code(double x, double y, double z) {
return fma((y - x), fma(z, -6.0, 4.0), x);
}
function code(x, y, z) return fma(Float64(y - x), fma(z, -6.0, 4.0), x) end
code[x_, y_, z_] := N[(N[(y - x), $MachinePrecision] * N[(z * -6.0 + 4.0), $MachinePrecision] + x), $MachinePrecision]
\begin{array}{l}
\\
\mathsf{fma}\left(y - x, \mathsf{fma}\left(z, -6, 4\right), x\right)
\end{array}
Initial program 99.6%
+-commutative99.6%
associate-*l*99.8%
fma-define99.8%
sub-neg99.8%
+-commutative99.8%
distribute-lft-in99.8%
distribute-rgt-neg-out99.8%
*-commutative99.8%
distribute-rgt-neg-in99.8%
fma-define99.8%
metadata-eval99.8%
metadata-eval99.8%
metadata-eval99.8%
Simplified99.8%
Final simplification99.8%
(FPCore (x y z) :precision binary64 (fma (- y x) (+ 4.0 (* z -6.0)) x))
double code(double x, double y, double z) {
return fma((y - x), (4.0 + (z * -6.0)), x);
}
function code(x, y, z) return fma(Float64(y - x), Float64(4.0 + Float64(z * -6.0)), x) end
code[x_, y_, z_] := N[(N[(y - x), $MachinePrecision] * N[(4.0 + N[(z * -6.0), $MachinePrecision]), $MachinePrecision] + x), $MachinePrecision]
\begin{array}{l}
\\
\mathsf{fma}\left(y - x, 4 + z \cdot -6, x\right)
\end{array}
Initial program 99.6%
+-commutative99.6%
associate-*l*99.8%
fma-define99.8%
sub-neg99.8%
distribute-rgt-in99.8%
metadata-eval99.8%
metadata-eval99.8%
distribute-lft-neg-out99.8%
distribute-rgt-neg-in99.8%
metadata-eval99.8%
Simplified99.8%
Final simplification99.8%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (* 6.0 (* x z))) (t_1 (* -6.0 (* y z))))
(if (<= z -1.85e+233)
t_0
(if (<= z -8.2e+214)
t_1
(if (<= z -9e+165)
t_0
(if (<= z -0.00052)
t_1
(if (<= z -2.15e-247)
(* x -3.0)
(if (<= z 2.1e-286)
(* y 4.0)
(if (<= z 8.6e-205)
(* x -3.0)
(if (<= z 490000.0)
(* y 4.0)
(if (or (<= z 3.15e+205) (not (<= z 3.2e+249)))
t_1
t_0)))))))))))
double code(double x, double y, double z) {
double t_0 = 6.0 * (x * z);
double t_1 = -6.0 * (y * z);
double tmp;
if (z <= -1.85e+233) {
tmp = t_0;
} else if (z <= -8.2e+214) {
tmp = t_1;
} else if (z <= -9e+165) {
tmp = t_0;
} else if (z <= -0.00052) {
tmp = t_1;
} else if (z <= -2.15e-247) {
tmp = x * -3.0;
} else if (z <= 2.1e-286) {
tmp = y * 4.0;
} else if (z <= 8.6e-205) {
tmp = x * -3.0;
} else if (z <= 490000.0) {
tmp = y * 4.0;
} else if ((z <= 3.15e+205) || !(z <= 3.2e+249)) {
tmp = t_1;
} 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) :: t_1
real(8) :: tmp
t_0 = 6.0d0 * (x * z)
t_1 = (-6.0d0) * (y * z)
if (z <= (-1.85d+233)) then
tmp = t_0
else if (z <= (-8.2d+214)) then
tmp = t_1
else if (z <= (-9d+165)) then
tmp = t_0
else if (z <= (-0.00052d0)) then
tmp = t_1
else if (z <= (-2.15d-247)) then
tmp = x * (-3.0d0)
else if (z <= 2.1d-286) then
tmp = y * 4.0d0
else if (z <= 8.6d-205) then
tmp = x * (-3.0d0)
else if (z <= 490000.0d0) then
tmp = y * 4.0d0
else if ((z <= 3.15d+205) .or. (.not. (z <= 3.2d+249))) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = 6.0 * (x * z);
double t_1 = -6.0 * (y * z);
double tmp;
if (z <= -1.85e+233) {
tmp = t_0;
} else if (z <= -8.2e+214) {
tmp = t_1;
} else if (z <= -9e+165) {
tmp = t_0;
} else if (z <= -0.00052) {
tmp = t_1;
} else if (z <= -2.15e-247) {
tmp = x * -3.0;
} else if (z <= 2.1e-286) {
tmp = y * 4.0;
} else if (z <= 8.6e-205) {
tmp = x * -3.0;
} else if (z <= 490000.0) {
tmp = y * 4.0;
} else if ((z <= 3.15e+205) || !(z <= 3.2e+249)) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(x, y, z): t_0 = 6.0 * (x * z) t_1 = -6.0 * (y * z) tmp = 0 if z <= -1.85e+233: tmp = t_0 elif z <= -8.2e+214: tmp = t_1 elif z <= -9e+165: tmp = t_0 elif z <= -0.00052: tmp = t_1 elif z <= -2.15e-247: tmp = x * -3.0 elif z <= 2.1e-286: tmp = y * 4.0 elif z <= 8.6e-205: tmp = x * -3.0 elif z <= 490000.0: tmp = y * 4.0 elif (z <= 3.15e+205) or not (z <= 3.2e+249): tmp = t_1 else: tmp = t_0 return tmp
function code(x, y, z) t_0 = Float64(6.0 * Float64(x * z)) t_1 = Float64(-6.0 * Float64(y * z)) tmp = 0.0 if (z <= -1.85e+233) tmp = t_0; elseif (z <= -8.2e+214) tmp = t_1; elseif (z <= -9e+165) tmp = t_0; elseif (z <= -0.00052) tmp = t_1; elseif (z <= -2.15e-247) tmp = Float64(x * -3.0); elseif (z <= 2.1e-286) tmp = Float64(y * 4.0); elseif (z <= 8.6e-205) tmp = Float64(x * -3.0); elseif (z <= 490000.0) tmp = Float64(y * 4.0); elseif ((z <= 3.15e+205) || !(z <= 3.2e+249)) tmp = t_1; else tmp = t_0; end return tmp end
function tmp_2 = code(x, y, z) t_0 = 6.0 * (x * z); t_1 = -6.0 * (y * z); tmp = 0.0; if (z <= -1.85e+233) tmp = t_0; elseif (z <= -8.2e+214) tmp = t_1; elseif (z <= -9e+165) tmp = t_0; elseif (z <= -0.00052) tmp = t_1; elseif (z <= -2.15e-247) tmp = x * -3.0; elseif (z <= 2.1e-286) tmp = y * 4.0; elseif (z <= 8.6e-205) tmp = x * -3.0; elseif (z <= 490000.0) tmp = y * 4.0; elseif ((z <= 3.15e+205) || ~((z <= 3.2e+249))) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[(6.0 * N[(x * z), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(-6.0 * N[(y * z), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z, -1.85e+233], t$95$0, If[LessEqual[z, -8.2e+214], t$95$1, If[LessEqual[z, -9e+165], t$95$0, If[LessEqual[z, -0.00052], t$95$1, If[LessEqual[z, -2.15e-247], N[(x * -3.0), $MachinePrecision], If[LessEqual[z, 2.1e-286], N[(y * 4.0), $MachinePrecision], If[LessEqual[z, 8.6e-205], N[(x * -3.0), $MachinePrecision], If[LessEqual[z, 490000.0], N[(y * 4.0), $MachinePrecision], If[Or[LessEqual[z, 3.15e+205], N[Not[LessEqual[z, 3.2e+249]], $MachinePrecision]], t$95$1, t$95$0]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 6 \cdot \left(x \cdot z\right)\\
t_1 := -6 \cdot \left(y \cdot z\right)\\
\mathbf{if}\;z \leq -1.85 \cdot 10^{+233}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z \leq -8.2 \cdot 10^{+214}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z \leq -9 \cdot 10^{+165}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z \leq -0.00052:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z \leq -2.15 \cdot 10^{-247}:\\
\;\;\;\;x \cdot -3\\
\mathbf{elif}\;z \leq 2.1 \cdot 10^{-286}:\\
\;\;\;\;y \cdot 4\\
\mathbf{elif}\;z \leq 8.6 \cdot 10^{-205}:\\
\;\;\;\;x \cdot -3\\
\mathbf{elif}\;z \leq 490000:\\
\;\;\;\;y \cdot 4\\
\mathbf{elif}\;z \leq 3.15 \cdot 10^{+205} \lor \neg \left(z \leq 3.2 \cdot 10^{+249}\right):\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if z < -1.8499999999999999e233 or -8.2e214 < z < -8.9999999999999993e165 or 3.15000000000000007e205 < z < 3.20000000000000014e249Initial program 99.8%
metadata-eval99.8%
Simplified99.8%
Taylor expanded in x around inf 76.0%
sub-neg76.0%
distribute-rgt-in76.0%
metadata-eval76.0%
distribute-lft-neg-in76.0%
associate-+r+76.0%
metadata-eval76.0%
distribute-rgt-neg-in76.0%
metadata-eval76.0%
Simplified76.0%
Taylor expanded in z around inf 76.1%
*-commutative76.1%
Simplified76.1%
if -1.8499999999999999e233 < z < -8.2e214 or -8.9999999999999993e165 < z < -5.19999999999999954e-4 or 4.9e5 < z < 3.15000000000000007e205 or 3.20000000000000014e249 < z Initial program 99.9%
metadata-eval99.9%
Simplified99.9%
Taylor expanded in y around inf 86.8%
Taylor expanded in x around 0 69.3%
Taylor expanded in z around inf 67.2%
if -5.19999999999999954e-4 < z < -2.15000000000000003e-247 or 2.09999999999999988e-286 < z < 8.5999999999999998e-205Initial program 99.4%
metadata-eval99.4%
Simplified99.4%
Taylor expanded in x around inf 62.1%
sub-neg62.1%
distribute-rgt-in62.1%
metadata-eval62.1%
distribute-lft-neg-in62.1%
associate-+r+62.1%
metadata-eval62.1%
distribute-rgt-neg-in62.1%
metadata-eval62.1%
Simplified62.1%
Taylor expanded in z around 0 62.1%
if -2.15000000000000003e-247 < z < 2.09999999999999988e-286 or 8.5999999999999998e-205 < z < 4.9e5Initial program 99.2%
metadata-eval99.2%
Simplified99.2%
Taylor expanded in y around inf 85.7%
Taylor expanded in x around 0 60.0%
Taylor expanded in z around 0 60.1%
Final simplification65.7%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (* 6.0 (* x z))) (t_1 (* z (* y -6.0))))
(if (<= z -3.2e+232)
t_0
(if (<= z -2.7e+215)
t_1
(if (<= z -4.1e+162)
t_0
(if (<= z -0.00052)
t_1
(if (<= z -3.4e-248)
(* x -3.0)
(if (<= z 2.3e-286)
(* y 4.0)
(if (<= z 4.4e-206)
(* x -3.0)
(if (<= z 490000.0)
(* y 4.0)
(if (or (<= z 8.5e+204) (not (<= z 3.4e+250)))
t_1
t_0)))))))))))
double code(double x, double y, double z) {
double t_0 = 6.0 * (x * z);
double t_1 = z * (y * -6.0);
double tmp;
if (z <= -3.2e+232) {
tmp = t_0;
} else if (z <= -2.7e+215) {
tmp = t_1;
} else if (z <= -4.1e+162) {
tmp = t_0;
} else if (z <= -0.00052) {
tmp = t_1;
} else if (z <= -3.4e-248) {
tmp = x * -3.0;
} else if (z <= 2.3e-286) {
tmp = y * 4.0;
} else if (z <= 4.4e-206) {
tmp = x * -3.0;
} else if (z <= 490000.0) {
tmp = y * 4.0;
} else if ((z <= 8.5e+204) || !(z <= 3.4e+250)) {
tmp = t_1;
} 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) :: t_1
real(8) :: tmp
t_0 = 6.0d0 * (x * z)
t_1 = z * (y * (-6.0d0))
if (z <= (-3.2d+232)) then
tmp = t_0
else if (z <= (-2.7d+215)) then
tmp = t_1
else if (z <= (-4.1d+162)) then
tmp = t_0
else if (z <= (-0.00052d0)) then
tmp = t_1
else if (z <= (-3.4d-248)) then
tmp = x * (-3.0d0)
else if (z <= 2.3d-286) then
tmp = y * 4.0d0
else if (z <= 4.4d-206) then
tmp = x * (-3.0d0)
else if (z <= 490000.0d0) then
tmp = y * 4.0d0
else if ((z <= 8.5d+204) .or. (.not. (z <= 3.4d+250))) then
tmp = t_1
else
tmp = t_0
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = 6.0 * (x * z);
double t_1 = z * (y * -6.0);
double tmp;
if (z <= -3.2e+232) {
tmp = t_0;
} else if (z <= -2.7e+215) {
tmp = t_1;
} else if (z <= -4.1e+162) {
tmp = t_0;
} else if (z <= -0.00052) {
tmp = t_1;
} else if (z <= -3.4e-248) {
tmp = x * -3.0;
} else if (z <= 2.3e-286) {
tmp = y * 4.0;
} else if (z <= 4.4e-206) {
tmp = x * -3.0;
} else if (z <= 490000.0) {
tmp = y * 4.0;
} else if ((z <= 8.5e+204) || !(z <= 3.4e+250)) {
tmp = t_1;
} else {
tmp = t_0;
}
return tmp;
}
def code(x, y, z): t_0 = 6.0 * (x * z) t_1 = z * (y * -6.0) tmp = 0 if z <= -3.2e+232: tmp = t_0 elif z <= -2.7e+215: tmp = t_1 elif z <= -4.1e+162: tmp = t_0 elif z <= -0.00052: tmp = t_1 elif z <= -3.4e-248: tmp = x * -3.0 elif z <= 2.3e-286: tmp = y * 4.0 elif z <= 4.4e-206: tmp = x * -3.0 elif z <= 490000.0: tmp = y * 4.0 elif (z <= 8.5e+204) or not (z <= 3.4e+250): tmp = t_1 else: tmp = t_0 return tmp
function code(x, y, z) t_0 = Float64(6.0 * Float64(x * z)) t_1 = Float64(z * Float64(y * -6.0)) tmp = 0.0 if (z <= -3.2e+232) tmp = t_0; elseif (z <= -2.7e+215) tmp = t_1; elseif (z <= -4.1e+162) tmp = t_0; elseif (z <= -0.00052) tmp = t_1; elseif (z <= -3.4e-248) tmp = Float64(x * -3.0); elseif (z <= 2.3e-286) tmp = Float64(y * 4.0); elseif (z <= 4.4e-206) tmp = Float64(x * -3.0); elseif (z <= 490000.0) tmp = Float64(y * 4.0); elseif ((z <= 8.5e+204) || !(z <= 3.4e+250)) tmp = t_1; else tmp = t_0; end return tmp end
function tmp_2 = code(x, y, z) t_0 = 6.0 * (x * z); t_1 = z * (y * -6.0); tmp = 0.0; if (z <= -3.2e+232) tmp = t_0; elseif (z <= -2.7e+215) tmp = t_1; elseif (z <= -4.1e+162) tmp = t_0; elseif (z <= -0.00052) tmp = t_1; elseif (z <= -3.4e-248) tmp = x * -3.0; elseif (z <= 2.3e-286) tmp = y * 4.0; elseif (z <= 4.4e-206) tmp = x * -3.0; elseif (z <= 490000.0) tmp = y * 4.0; elseif ((z <= 8.5e+204) || ~((z <= 3.4e+250))) tmp = t_1; else tmp = t_0; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[(6.0 * N[(x * z), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(z * N[(y * -6.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z, -3.2e+232], t$95$0, If[LessEqual[z, -2.7e+215], t$95$1, If[LessEqual[z, -4.1e+162], t$95$0, If[LessEqual[z, -0.00052], t$95$1, If[LessEqual[z, -3.4e-248], N[(x * -3.0), $MachinePrecision], If[LessEqual[z, 2.3e-286], N[(y * 4.0), $MachinePrecision], If[LessEqual[z, 4.4e-206], N[(x * -3.0), $MachinePrecision], If[LessEqual[z, 490000.0], N[(y * 4.0), $MachinePrecision], If[Or[LessEqual[z, 8.5e+204], N[Not[LessEqual[z, 3.4e+250]], $MachinePrecision]], t$95$1, t$95$0]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 6 \cdot \left(x \cdot z\right)\\
t_1 := z \cdot \left(y \cdot -6\right)\\
\mathbf{if}\;z \leq -3.2 \cdot 10^{+232}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z \leq -2.7 \cdot 10^{+215}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z \leq -4.1 \cdot 10^{+162}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z \leq -0.00052:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z \leq -3.4 \cdot 10^{-248}:\\
\;\;\;\;x \cdot -3\\
\mathbf{elif}\;z \leq 2.3 \cdot 10^{-286}:\\
\;\;\;\;y \cdot 4\\
\mathbf{elif}\;z \leq 4.4 \cdot 10^{-206}:\\
\;\;\;\;x \cdot -3\\
\mathbf{elif}\;z \leq 490000:\\
\;\;\;\;y \cdot 4\\
\mathbf{elif}\;z \leq 8.5 \cdot 10^{+204} \lor \neg \left(z \leq 3.4 \cdot 10^{+250}\right):\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if z < -3.2000000000000002e232 or -2.7e215 < z < -4.0999999999999999e162 or 8.5e204 < z < 3.39999999999999973e250Initial program 99.8%
metadata-eval99.8%
Simplified99.8%
Taylor expanded in x around inf 76.0%
sub-neg76.0%
distribute-rgt-in76.0%
metadata-eval76.0%
distribute-lft-neg-in76.0%
associate-+r+76.0%
metadata-eval76.0%
distribute-rgt-neg-in76.0%
metadata-eval76.0%
Simplified76.0%
Taylor expanded in z around inf 76.1%
*-commutative76.1%
Simplified76.1%
if -3.2000000000000002e232 < z < -2.7e215 or -4.0999999999999999e162 < z < -5.19999999999999954e-4 or 4.9e5 < z < 8.5e204 or 3.39999999999999973e250 < z Initial program 99.9%
metadata-eval99.9%
Simplified99.9%
Taylor expanded in x around 0 95.5%
fma-define95.5%
*-commutative95.5%
+-commutative95.5%
Simplified95.5%
Taylor expanded in z around inf 97.3%
Taylor expanded in y around inf 67.4%
*-commutative67.4%
Simplified67.4%
if -5.19999999999999954e-4 < z < -3.3999999999999998e-248 or 2.3000000000000002e-286 < z < 4.3999999999999997e-206Initial program 99.4%
metadata-eval99.4%
Simplified99.4%
Taylor expanded in x around inf 62.1%
sub-neg62.1%
distribute-rgt-in62.1%
metadata-eval62.1%
distribute-lft-neg-in62.1%
associate-+r+62.1%
metadata-eval62.1%
distribute-rgt-neg-in62.1%
metadata-eval62.1%
Simplified62.1%
Taylor expanded in z around 0 62.1%
if -3.3999999999999998e-248 < z < 2.3000000000000002e-286 or 4.3999999999999997e-206 < z < 4.9e5Initial program 99.2%
metadata-eval99.2%
Simplified99.2%
Taylor expanded in y around inf 85.7%
Taylor expanded in x around 0 60.0%
Taylor expanded in z around 0 60.1%
Final simplification65.8%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (* 6.0 (* x z))) (t_1 (* -6.0 (* y z))))
(if (<= z -3.1e+233)
t_0
(if (<= z -2.75e+215)
t_1
(if (<= z -2.2e+162)
t_0
(if (<= z -0.00052)
t_1
(if (<= z -2.75e-247)
(* x -3.0)
(if (<= z 1.55e-286)
(* y 4.0)
(if (<= z 1.95e-204)
(* x -3.0)
(if (<= z 490000.0)
(* y 4.0)
(if (<= z 3.6e+201)
(* y (* z -6.0))
(if (<= z 2.4e+249) t_0 t_1))))))))))))
double code(double x, double y, double z) {
double t_0 = 6.0 * (x * z);
double t_1 = -6.0 * (y * z);
double tmp;
if (z <= -3.1e+233) {
tmp = t_0;
} else if (z <= -2.75e+215) {
tmp = t_1;
} else if (z <= -2.2e+162) {
tmp = t_0;
} else if (z <= -0.00052) {
tmp = t_1;
} else if (z <= -2.75e-247) {
tmp = x * -3.0;
} else if (z <= 1.55e-286) {
tmp = y * 4.0;
} else if (z <= 1.95e-204) {
tmp = x * -3.0;
} else if (z <= 490000.0) {
tmp = y * 4.0;
} else if (z <= 3.6e+201) {
tmp = y * (z * -6.0);
} else if (z <= 2.4e+249) {
tmp = t_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 = 6.0d0 * (x * z)
t_1 = (-6.0d0) * (y * z)
if (z <= (-3.1d+233)) then
tmp = t_0
else if (z <= (-2.75d+215)) then
tmp = t_1
else if (z <= (-2.2d+162)) then
tmp = t_0
else if (z <= (-0.00052d0)) then
tmp = t_1
else if (z <= (-2.75d-247)) then
tmp = x * (-3.0d0)
else if (z <= 1.55d-286) then
tmp = y * 4.0d0
else if (z <= 1.95d-204) then
tmp = x * (-3.0d0)
else if (z <= 490000.0d0) then
tmp = y * 4.0d0
else if (z <= 3.6d+201) then
tmp = y * (z * (-6.0d0))
else if (z <= 2.4d+249) then
tmp = t_0
else
tmp = t_1
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = 6.0 * (x * z);
double t_1 = -6.0 * (y * z);
double tmp;
if (z <= -3.1e+233) {
tmp = t_0;
} else if (z <= -2.75e+215) {
tmp = t_1;
} else if (z <= -2.2e+162) {
tmp = t_0;
} else if (z <= -0.00052) {
tmp = t_1;
} else if (z <= -2.75e-247) {
tmp = x * -3.0;
} else if (z <= 1.55e-286) {
tmp = y * 4.0;
} else if (z <= 1.95e-204) {
tmp = x * -3.0;
} else if (z <= 490000.0) {
tmp = y * 4.0;
} else if (z <= 3.6e+201) {
tmp = y * (z * -6.0);
} else if (z <= 2.4e+249) {
tmp = t_0;
} else {
tmp = t_1;
}
return tmp;
}
def code(x, y, z): t_0 = 6.0 * (x * z) t_1 = -6.0 * (y * z) tmp = 0 if z <= -3.1e+233: tmp = t_0 elif z <= -2.75e+215: tmp = t_1 elif z <= -2.2e+162: tmp = t_0 elif z <= -0.00052: tmp = t_1 elif z <= -2.75e-247: tmp = x * -3.0 elif z <= 1.55e-286: tmp = y * 4.0 elif z <= 1.95e-204: tmp = x * -3.0 elif z <= 490000.0: tmp = y * 4.0 elif z <= 3.6e+201: tmp = y * (z * -6.0) elif z <= 2.4e+249: tmp = t_0 else: tmp = t_1 return tmp
function code(x, y, z) t_0 = Float64(6.0 * Float64(x * z)) t_1 = Float64(-6.0 * Float64(y * z)) tmp = 0.0 if (z <= -3.1e+233) tmp = t_0; elseif (z <= -2.75e+215) tmp = t_1; elseif (z <= -2.2e+162) tmp = t_0; elseif (z <= -0.00052) tmp = t_1; elseif (z <= -2.75e-247) tmp = Float64(x * -3.0); elseif (z <= 1.55e-286) tmp = Float64(y * 4.0); elseif (z <= 1.95e-204) tmp = Float64(x * -3.0); elseif (z <= 490000.0) tmp = Float64(y * 4.0); elseif (z <= 3.6e+201) tmp = Float64(y * Float64(z * -6.0)); elseif (z <= 2.4e+249) tmp = t_0; else tmp = t_1; end return tmp end
function tmp_2 = code(x, y, z) t_0 = 6.0 * (x * z); t_1 = -6.0 * (y * z); tmp = 0.0; if (z <= -3.1e+233) tmp = t_0; elseif (z <= -2.75e+215) tmp = t_1; elseif (z <= -2.2e+162) tmp = t_0; elseif (z <= -0.00052) tmp = t_1; elseif (z <= -2.75e-247) tmp = x * -3.0; elseif (z <= 1.55e-286) tmp = y * 4.0; elseif (z <= 1.95e-204) tmp = x * -3.0; elseif (z <= 490000.0) tmp = y * 4.0; elseif (z <= 3.6e+201) tmp = y * (z * -6.0); elseif (z <= 2.4e+249) tmp = t_0; else tmp = t_1; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[(6.0 * N[(x * z), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(-6.0 * N[(y * z), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z, -3.1e+233], t$95$0, If[LessEqual[z, -2.75e+215], t$95$1, If[LessEqual[z, -2.2e+162], t$95$0, If[LessEqual[z, -0.00052], t$95$1, If[LessEqual[z, -2.75e-247], N[(x * -3.0), $MachinePrecision], If[LessEqual[z, 1.55e-286], N[(y * 4.0), $MachinePrecision], If[LessEqual[z, 1.95e-204], N[(x * -3.0), $MachinePrecision], If[LessEqual[z, 490000.0], N[(y * 4.0), $MachinePrecision], If[LessEqual[z, 3.6e+201], N[(y * N[(z * -6.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 2.4e+249], t$95$0, t$95$1]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := 6 \cdot \left(x \cdot z\right)\\
t_1 := -6 \cdot \left(y \cdot z\right)\\
\mathbf{if}\;z \leq -3.1 \cdot 10^{+233}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z \leq -2.75 \cdot 10^{+215}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z \leq -2.2 \cdot 10^{+162}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z \leq -0.00052:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z \leq -2.75 \cdot 10^{-247}:\\
\;\;\;\;x \cdot -3\\
\mathbf{elif}\;z \leq 1.55 \cdot 10^{-286}:\\
\;\;\;\;y \cdot 4\\
\mathbf{elif}\;z \leq 1.95 \cdot 10^{-204}:\\
\;\;\;\;x \cdot -3\\
\mathbf{elif}\;z \leq 490000:\\
\;\;\;\;y \cdot 4\\
\mathbf{elif}\;z \leq 3.6 \cdot 10^{+201}:\\
\;\;\;\;y \cdot \left(z \cdot -6\right)\\
\mathbf{elif}\;z \leq 2.4 \cdot 10^{+249}:\\
\;\;\;\;t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if z < -3.10000000000000016e233 or -2.75e215 < z < -2.2000000000000002e162 or 3.59999999999999976e201 < z < 2.4e249Initial program 99.8%
metadata-eval99.8%
Simplified99.8%
Taylor expanded in x around inf 76.0%
sub-neg76.0%
distribute-rgt-in76.0%
metadata-eval76.0%
distribute-lft-neg-in76.0%
associate-+r+76.0%
metadata-eval76.0%
distribute-rgt-neg-in76.0%
metadata-eval76.0%
Simplified76.0%
Taylor expanded in z around inf 76.1%
*-commutative76.1%
Simplified76.1%
if -3.10000000000000016e233 < z < -2.75e215 or -2.2000000000000002e162 < z < -5.19999999999999954e-4 or 2.4e249 < z Initial program 99.9%
metadata-eval99.9%
Simplified99.9%
Taylor expanded in y around inf 87.7%
Taylor expanded in x around 0 74.8%
Taylor expanded in z around inf 72.3%
if -5.19999999999999954e-4 < z < -2.74999999999999997e-247 or 1.54999999999999991e-286 < z < 1.95e-204Initial program 99.4%
metadata-eval99.4%
Simplified99.4%
Taylor expanded in x around inf 62.1%
sub-neg62.1%
distribute-rgt-in62.1%
metadata-eval62.1%
distribute-lft-neg-in62.1%
associate-+r+62.1%
metadata-eval62.1%
distribute-rgt-neg-in62.1%
metadata-eval62.1%
Simplified62.1%
Taylor expanded in z around 0 62.1%
if -2.74999999999999997e-247 < z < 1.54999999999999991e-286 or 1.95e-204 < z < 4.9e5Initial program 99.2%
metadata-eval99.2%
Simplified99.2%
Taylor expanded in y around inf 85.7%
Taylor expanded in x around 0 60.0%
Taylor expanded in z around 0 60.1%
if 4.9e5 < z < 3.59999999999999976e201Initial program 99.8%
metadata-eval99.8%
Simplified99.8%
Taylor expanded in y around inf 85.3%
Taylor expanded in x around 0 60.7%
Taylor expanded in z around inf 59.3%
*-commutative59.3%
associate-*r*59.4%
Simplified59.4%
Final simplification65.8%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (* -6.0 (* y z))))
(if (<= z -1.08e-5)
t_0
(if (<= z -9e-248)
(* x -3.0)
(if (<= z 7.6e-287)
(* y 4.0)
(if (<= z 1.95e-206)
(* x -3.0)
(if (<= z 490000.0) (* y 4.0) t_0)))))))
double code(double x, double y, double z) {
double t_0 = -6.0 * (y * z);
double tmp;
if (z <= -1.08e-5) {
tmp = t_0;
} else if (z <= -9e-248) {
tmp = x * -3.0;
} else if (z <= 7.6e-287) {
tmp = y * 4.0;
} else if (z <= 1.95e-206) {
tmp = x * -3.0;
} else if (z <= 490000.0) {
tmp = y * 4.0;
} 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 = (-6.0d0) * (y * z)
if (z <= (-1.08d-5)) then
tmp = t_0
else if (z <= (-9d-248)) then
tmp = x * (-3.0d0)
else if (z <= 7.6d-287) then
tmp = y * 4.0d0
else if (z <= 1.95d-206) then
tmp = x * (-3.0d0)
else if (z <= 490000.0d0) then
tmp = y * 4.0d0
else
tmp = t_0
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = -6.0 * (y * z);
double tmp;
if (z <= -1.08e-5) {
tmp = t_0;
} else if (z <= -9e-248) {
tmp = x * -3.0;
} else if (z <= 7.6e-287) {
tmp = y * 4.0;
} else if (z <= 1.95e-206) {
tmp = x * -3.0;
} else if (z <= 490000.0) {
tmp = y * 4.0;
} else {
tmp = t_0;
}
return tmp;
}
def code(x, y, z): t_0 = -6.0 * (y * z) tmp = 0 if z <= -1.08e-5: tmp = t_0 elif z <= -9e-248: tmp = x * -3.0 elif z <= 7.6e-287: tmp = y * 4.0 elif z <= 1.95e-206: tmp = x * -3.0 elif z <= 490000.0: tmp = y * 4.0 else: tmp = t_0 return tmp
function code(x, y, z) t_0 = Float64(-6.0 * Float64(y * z)) tmp = 0.0 if (z <= -1.08e-5) tmp = t_0; elseif (z <= -9e-248) tmp = Float64(x * -3.0); elseif (z <= 7.6e-287) tmp = Float64(y * 4.0); elseif (z <= 1.95e-206) tmp = Float64(x * -3.0); elseif (z <= 490000.0) tmp = Float64(y * 4.0); else tmp = t_0; end return tmp end
function tmp_2 = code(x, y, z) t_0 = -6.0 * (y * z); tmp = 0.0; if (z <= -1.08e-5) tmp = t_0; elseif (z <= -9e-248) tmp = x * -3.0; elseif (z <= 7.6e-287) tmp = y * 4.0; elseif (z <= 1.95e-206) tmp = x * -3.0; elseif (z <= 490000.0) tmp = y * 4.0; else tmp = t_0; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[(-6.0 * N[(y * z), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z, -1.08e-5], t$95$0, If[LessEqual[z, -9e-248], N[(x * -3.0), $MachinePrecision], If[LessEqual[z, 7.6e-287], N[(y * 4.0), $MachinePrecision], If[LessEqual[z, 1.95e-206], N[(x * -3.0), $MachinePrecision], If[LessEqual[z, 490000.0], N[(y * 4.0), $MachinePrecision], t$95$0]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := -6 \cdot \left(y \cdot z\right)\\
\mathbf{if}\;z \leq -1.08 \cdot 10^{-5}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z \leq -9 \cdot 10^{-248}:\\
\;\;\;\;x \cdot -3\\
\mathbf{elif}\;z \leq 7.6 \cdot 10^{-287}:\\
\;\;\;\;y \cdot 4\\
\mathbf{elif}\;z \leq 1.95 \cdot 10^{-206}:\\
\;\;\;\;x \cdot -3\\
\mathbf{elif}\;z \leq 490000:\\
\;\;\;\;y \cdot 4\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if z < -1.07999999999999999e-5 or 4.9e5 < z Initial program 99.8%
metadata-eval99.8%
Simplified99.8%
Taylor expanded in y around inf 83.0%
Taylor expanded in x around 0 58.9%
Taylor expanded in z around inf 57.5%
if -1.07999999999999999e-5 < z < -8.9999999999999992e-248 or 7.59999999999999964e-287 < z < 1.95000000000000004e-206Initial program 99.4%
metadata-eval99.4%
Simplified99.4%
Taylor expanded in x around inf 62.1%
sub-neg62.1%
distribute-rgt-in62.1%
metadata-eval62.1%
distribute-lft-neg-in62.1%
associate-+r+62.1%
metadata-eval62.1%
distribute-rgt-neg-in62.1%
metadata-eval62.1%
Simplified62.1%
Taylor expanded in z around 0 62.1%
if -8.9999999999999992e-248 < z < 7.59999999999999964e-287 or 1.95000000000000004e-206 < z < 4.9e5Initial program 99.2%
metadata-eval99.2%
Simplified99.2%
Taylor expanded in y around inf 85.7%
Taylor expanded in x around 0 60.0%
Taylor expanded in z around 0 60.1%
Final simplification59.1%
(FPCore (x y z)
:precision binary64
(if (or (<= x -1.6e+128)
(not (or (<= x -5.8e+40) (and (not (<= x -3.5e-56)) (<= x 2.8e+19)))))
(* x (+ -3.0 (* z 6.0)))
(* y (* 6.0 (- 0.6666666666666666 z)))))
double code(double x, double y, double z) {
double tmp;
if ((x <= -1.6e+128) || !((x <= -5.8e+40) || (!(x <= -3.5e-56) && (x <= 2.8e+19)))) {
tmp = x * (-3.0 + (z * 6.0));
} else {
tmp = y * (6.0 * (0.6666666666666666 - 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 <= (-1.6d+128)) .or. (.not. (x <= (-5.8d+40)) .or. (.not. (x <= (-3.5d-56))) .and. (x <= 2.8d+19))) then
tmp = x * ((-3.0d0) + (z * 6.0d0))
else
tmp = y * (6.0d0 * (0.6666666666666666d0 - z))
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if ((x <= -1.6e+128) || !((x <= -5.8e+40) || (!(x <= -3.5e-56) && (x <= 2.8e+19)))) {
tmp = x * (-3.0 + (z * 6.0));
} else {
tmp = y * (6.0 * (0.6666666666666666 - z));
}
return tmp;
}
def code(x, y, z): tmp = 0 if (x <= -1.6e+128) or not ((x <= -5.8e+40) or (not (x <= -3.5e-56) and (x <= 2.8e+19))): tmp = x * (-3.0 + (z * 6.0)) else: tmp = y * (6.0 * (0.6666666666666666 - z)) return tmp
function code(x, y, z) tmp = 0.0 if ((x <= -1.6e+128) || !((x <= -5.8e+40) || (!(x <= -3.5e-56) && (x <= 2.8e+19)))) tmp = Float64(x * Float64(-3.0 + Float64(z * 6.0))); else tmp = Float64(y * Float64(6.0 * Float64(0.6666666666666666 - z))); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if ((x <= -1.6e+128) || ~(((x <= -5.8e+40) || (~((x <= -3.5e-56)) && (x <= 2.8e+19))))) tmp = x * (-3.0 + (z * 6.0)); else tmp = y * (6.0 * (0.6666666666666666 - z)); end tmp_2 = tmp; end
code[x_, y_, z_] := If[Or[LessEqual[x, -1.6e+128], N[Not[Or[LessEqual[x, -5.8e+40], And[N[Not[LessEqual[x, -3.5e-56]], $MachinePrecision], LessEqual[x, 2.8e+19]]]], $MachinePrecision]], N[(x * N[(-3.0 + N[(z * 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(y * N[(6.0 * N[(0.6666666666666666 - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.6 \cdot 10^{+128} \lor \neg \left(x \leq -5.8 \cdot 10^{+40} \lor \neg \left(x \leq -3.5 \cdot 10^{-56}\right) \land x \leq 2.8 \cdot 10^{+19}\right):\\
\;\;\;\;x \cdot \left(-3 + z \cdot 6\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot \left(6 \cdot \left(0.6666666666666666 - z\right)\right)\\
\end{array}
\end{array}
if x < -1.59999999999999993e128 or -5.80000000000000035e40 < x < -3.4999999999999998e-56 or 2.8e19 < x Initial program 99.5%
metadata-eval99.5%
Simplified99.5%
Taylor expanded in x around inf 85.5%
sub-neg85.5%
distribute-rgt-in85.5%
metadata-eval85.5%
distribute-lft-neg-in85.5%
associate-+r+85.5%
metadata-eval85.5%
distribute-rgt-neg-in85.5%
metadata-eval85.5%
Simplified85.5%
if -1.59999999999999993e128 < x < -5.80000000000000035e40 or -3.4999999999999998e-56 < x < 2.8e19Initial program 99.6%
metadata-eval99.6%
Simplified99.6%
Taylor expanded in y around inf 96.2%
Taylor expanded in x around 0 85.2%
Final simplification85.3%
(FPCore (x y z)
:precision binary64
(let* ((t_0 (* x (+ -3.0 (* z 6.0)))))
(if (<= x -9.2e-62)
t_0
(if (<= x -2.4e-178)
(* y 4.0)
(if (<= x 8.6e-44) (* z (* y -6.0)) t_0)))))
double code(double x, double y, double z) {
double t_0 = x * (-3.0 + (z * 6.0));
double tmp;
if (x <= -9.2e-62) {
tmp = t_0;
} else if (x <= -2.4e-178) {
tmp = y * 4.0;
} else if (x <= 8.6e-44) {
tmp = z * (y * -6.0);
} 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 = x * ((-3.0d0) + (z * 6.0d0))
if (x <= (-9.2d-62)) then
tmp = t_0
else if (x <= (-2.4d-178)) then
tmp = y * 4.0d0
else if (x <= 8.6d-44) then
tmp = z * (y * (-6.0d0))
else
tmp = t_0
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double t_0 = x * (-3.0 + (z * 6.0));
double tmp;
if (x <= -9.2e-62) {
tmp = t_0;
} else if (x <= -2.4e-178) {
tmp = y * 4.0;
} else if (x <= 8.6e-44) {
tmp = z * (y * -6.0);
} else {
tmp = t_0;
}
return tmp;
}
def code(x, y, z): t_0 = x * (-3.0 + (z * 6.0)) tmp = 0 if x <= -9.2e-62: tmp = t_0 elif x <= -2.4e-178: tmp = y * 4.0 elif x <= 8.6e-44: tmp = z * (y * -6.0) else: tmp = t_0 return tmp
function code(x, y, z) t_0 = Float64(x * Float64(-3.0 + Float64(z * 6.0))) tmp = 0.0 if (x <= -9.2e-62) tmp = t_0; elseif (x <= -2.4e-178) tmp = Float64(y * 4.0); elseif (x <= 8.6e-44) tmp = Float64(z * Float64(y * -6.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(x, y, z) t_0 = x * (-3.0 + (z * 6.0)); tmp = 0.0; if (x <= -9.2e-62) tmp = t_0; elseif (x <= -2.4e-178) tmp = y * 4.0; elseif (x <= 8.6e-44) tmp = z * (y * -6.0); else tmp = t_0; end tmp_2 = tmp; end
code[x_, y_, z_] := Block[{t$95$0 = N[(x * N[(-3.0 + N[(z * 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, -9.2e-62], t$95$0, If[LessEqual[x, -2.4e-178], N[(y * 4.0), $MachinePrecision], If[LessEqual[x, 8.6e-44], N[(z * N[(y * -6.0), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := x \cdot \left(-3 + z \cdot 6\right)\\
\mathbf{if}\;x \leq -9.2 \cdot 10^{-62}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;x \leq -2.4 \cdot 10^{-178}:\\
\;\;\;\;y \cdot 4\\
\mathbf{elif}\;x \leq 8.6 \cdot 10^{-44}:\\
\;\;\;\;z \cdot \left(y \cdot -6\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
if x < -9.20000000000000002e-62 or 8.60000000000000027e-44 < x Initial program 99.6%
metadata-eval99.6%
Simplified99.6%
Taylor expanded in x around inf 77.8%
sub-neg77.8%
distribute-rgt-in77.8%
metadata-eval77.8%
distribute-lft-neg-in77.8%
associate-+r+77.8%
metadata-eval77.8%
distribute-rgt-neg-in77.8%
metadata-eval77.8%
Simplified77.8%
if -9.20000000000000002e-62 < x < -2.40000000000000005e-178Initial program 99.6%
metadata-eval99.6%
Simplified99.6%
Taylor expanded in y around inf 99.9%
Taylor expanded in x around 0 90.2%
Taylor expanded in z around 0 55.6%
if -2.40000000000000005e-178 < x < 8.60000000000000027e-44Initial program 99.6%
metadata-eval99.6%
Simplified99.6%
Taylor expanded in x around 0 99.5%
fma-define99.5%
*-commutative99.5%
+-commutative99.5%
Simplified99.5%
Taylor expanded in z around inf 60.0%
Taylor expanded in y around inf 55.4%
*-commutative55.4%
Simplified55.4%
Final simplification67.7%
(FPCore (x y z) :precision binary64 (if (or (<= z -0.6) (not (<= z 0.65))) (* z (+ (* y -6.0) (* x 6.0))) (+ (* y 4.0) (* x -3.0))))
double code(double x, double y, double z) {
double tmp;
if ((z <= -0.6) || !(z <= 0.65)) {
tmp = z * ((y * -6.0) + (x * 6.0));
} else {
tmp = (y * 4.0) + (x * -3.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) :: tmp
if ((z <= (-0.6d0)) .or. (.not. (z <= 0.65d0))) then
tmp = z * ((y * (-6.0d0)) + (x * 6.0d0))
else
tmp = (y * 4.0d0) + (x * (-3.0d0))
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if ((z <= -0.6) || !(z <= 0.65)) {
tmp = z * ((y * -6.0) + (x * 6.0));
} else {
tmp = (y * 4.0) + (x * -3.0);
}
return tmp;
}
def code(x, y, z): tmp = 0 if (z <= -0.6) or not (z <= 0.65): tmp = z * ((y * -6.0) + (x * 6.0)) else: tmp = (y * 4.0) + (x * -3.0) return tmp
function code(x, y, z) tmp = 0.0 if ((z <= -0.6) || !(z <= 0.65)) tmp = Float64(z * Float64(Float64(y * -6.0) + Float64(x * 6.0))); else tmp = Float64(Float64(y * 4.0) + Float64(x * -3.0)); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if ((z <= -0.6) || ~((z <= 0.65))) tmp = z * ((y * -6.0) + (x * 6.0)); else tmp = (y * 4.0) + (x * -3.0); end tmp_2 = tmp; end
code[x_, y_, z_] := If[Or[LessEqual[z, -0.6], N[Not[LessEqual[z, 0.65]], $MachinePrecision]], N[(z * N[(N[(y * -6.0), $MachinePrecision] + N[(x * 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(y * 4.0), $MachinePrecision] + N[(x * -3.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -0.6 \lor \neg \left(z \leq 0.65\right):\\
\;\;\;\;z \cdot \left(y \cdot -6 + x \cdot 6\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot 4 + x \cdot -3\\
\end{array}
\end{array}
if z < -0.599999999999999978 or 0.650000000000000022 < z Initial program 99.8%
metadata-eval99.8%
Simplified99.8%
Taylor expanded in x around 0 93.1%
fma-define93.1%
*-commutative93.1%
+-commutative93.1%
Simplified93.1%
Taylor expanded in z around inf 98.3%
if -0.599999999999999978 < z < 0.650000000000000022Initial program 99.3%
metadata-eval99.3%
Simplified99.3%
Taylor expanded in x around 0 99.6%
fma-define99.6%
*-commutative99.6%
+-commutative99.6%
Simplified99.6%
Taylor expanded in z around 0 99.3%
Final simplification98.8%
(FPCore (x y z) :precision binary64 (if (or (<= z -0.58) (not (<= z 0.55))) (* (- y x) (* z -6.0)) (+ x (* (- y x) 4.0))))
double code(double x, double y, double z) {
double tmp;
if ((z <= -0.58) || !(z <= 0.55)) {
tmp = (y - x) * (z * -6.0);
} else {
tmp = x + ((y - x) * 4.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) :: tmp
if ((z <= (-0.58d0)) .or. (.not. (z <= 0.55d0))) then
tmp = (y - x) * (z * (-6.0d0))
else
tmp = x + ((y - x) * 4.0d0)
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if ((z <= -0.58) || !(z <= 0.55)) {
tmp = (y - x) * (z * -6.0);
} else {
tmp = x + ((y - x) * 4.0);
}
return tmp;
}
def code(x, y, z): tmp = 0 if (z <= -0.58) or not (z <= 0.55): tmp = (y - x) * (z * -6.0) else: tmp = x + ((y - x) * 4.0) return tmp
function code(x, y, z) tmp = 0.0 if ((z <= -0.58) || !(z <= 0.55)) tmp = Float64(Float64(y - x) * Float64(z * -6.0)); else tmp = Float64(x + Float64(Float64(y - x) * 4.0)); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if ((z <= -0.58) || ~((z <= 0.55))) tmp = (y - x) * (z * -6.0); else tmp = x + ((y - x) * 4.0); end tmp_2 = tmp; end
code[x_, y_, z_] := If[Or[LessEqual[z, -0.58], N[Not[LessEqual[z, 0.55]], $MachinePrecision]], N[(N[(y - x), $MachinePrecision] * N[(z * -6.0), $MachinePrecision]), $MachinePrecision], N[(x + N[(N[(y - x), $MachinePrecision] * 4.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -0.58 \lor \neg \left(z \leq 0.55\right):\\
\;\;\;\;\left(y - x\right) \cdot \left(z \cdot -6\right)\\
\mathbf{else}:\\
\;\;\;\;x + \left(y - x\right) \cdot 4\\
\end{array}
\end{array}
if z < -0.57999999999999996 or 0.55000000000000004 < z Initial program 99.8%
metadata-eval99.8%
Simplified99.8%
Taylor expanded in x around 0 93.1%
fma-define93.1%
*-commutative93.1%
+-commutative93.1%
Simplified93.1%
Taylor expanded in z around inf 98.3%
metadata-eval98.3%
associate-*r*98.3%
neg-mul-198.3%
distribute-lft-in98.3%
sub-neg98.3%
associate-*r*98.2%
*-commutative98.2%
Simplified98.2%
if -0.57999999999999996 < z < 0.55000000000000004Initial program 99.3%
metadata-eval99.3%
Simplified99.3%
Taylor expanded in z around 0 99.3%
Final simplification98.7%
(FPCore (x y z) :precision binary64 (if (or (<= z -0.62) (not (<= z 0.65))) (* (- y x) (* z -6.0)) (+ (* y 4.0) (* x -3.0))))
double code(double x, double y, double z) {
double tmp;
if ((z <= -0.62) || !(z <= 0.65)) {
tmp = (y - x) * (z * -6.0);
} else {
tmp = (y * 4.0) + (x * -3.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) :: tmp
if ((z <= (-0.62d0)) .or. (.not. (z <= 0.65d0))) then
tmp = (y - x) * (z * (-6.0d0))
else
tmp = (y * 4.0d0) + (x * (-3.0d0))
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if ((z <= -0.62) || !(z <= 0.65)) {
tmp = (y - x) * (z * -6.0);
} else {
tmp = (y * 4.0) + (x * -3.0);
}
return tmp;
}
def code(x, y, z): tmp = 0 if (z <= -0.62) or not (z <= 0.65): tmp = (y - x) * (z * -6.0) else: tmp = (y * 4.0) + (x * -3.0) return tmp
function code(x, y, z) tmp = 0.0 if ((z <= -0.62) || !(z <= 0.65)) tmp = Float64(Float64(y - x) * Float64(z * -6.0)); else tmp = Float64(Float64(y * 4.0) + Float64(x * -3.0)); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if ((z <= -0.62) || ~((z <= 0.65))) tmp = (y - x) * (z * -6.0); else tmp = (y * 4.0) + (x * -3.0); end tmp_2 = tmp; end
code[x_, y_, z_] := If[Or[LessEqual[z, -0.62], N[Not[LessEqual[z, 0.65]], $MachinePrecision]], N[(N[(y - x), $MachinePrecision] * N[(z * -6.0), $MachinePrecision]), $MachinePrecision], N[(N[(y * 4.0), $MachinePrecision] + N[(x * -3.0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -0.62 \lor \neg \left(z \leq 0.65\right):\\
\;\;\;\;\left(y - x\right) \cdot \left(z \cdot -6\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot 4 + x \cdot -3\\
\end{array}
\end{array}
if z < -0.619999999999999996 or 0.650000000000000022 < z Initial program 99.8%
metadata-eval99.8%
Simplified99.8%
Taylor expanded in x around 0 93.1%
fma-define93.1%
*-commutative93.1%
+-commutative93.1%
Simplified93.1%
Taylor expanded in z around inf 98.3%
metadata-eval98.3%
associate-*r*98.3%
neg-mul-198.3%
distribute-lft-in98.3%
sub-neg98.3%
associate-*r*98.2%
*-commutative98.2%
Simplified98.2%
if -0.619999999999999996 < z < 0.650000000000000022Initial program 99.3%
metadata-eval99.3%
Simplified99.3%
Taylor expanded in x around 0 99.6%
fma-define99.6%
*-commutative99.6%
+-commutative99.6%
Simplified99.6%
Taylor expanded in z around 0 99.3%
Final simplification98.7%
(FPCore (x y z) :precision binary64 (if (or (<= x -1.46e-53) (not (<= x 330000.0))) (* x -3.0) (* y 4.0)))
double code(double x, double y, double z) {
double tmp;
if ((x <= -1.46e-53) || !(x <= 330000.0)) {
tmp = x * -3.0;
} else {
tmp = y * 4.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) :: tmp
if ((x <= (-1.46d-53)) .or. (.not. (x <= 330000.0d0))) then
tmp = x * (-3.0d0)
else
tmp = y * 4.0d0
end if
code = tmp
end function
public static double code(double x, double y, double z) {
double tmp;
if ((x <= -1.46e-53) || !(x <= 330000.0)) {
tmp = x * -3.0;
} else {
tmp = y * 4.0;
}
return tmp;
}
def code(x, y, z): tmp = 0 if (x <= -1.46e-53) or not (x <= 330000.0): tmp = x * -3.0 else: tmp = y * 4.0 return tmp
function code(x, y, z) tmp = 0.0 if ((x <= -1.46e-53) || !(x <= 330000.0)) tmp = Float64(x * -3.0); else tmp = Float64(y * 4.0); end return tmp end
function tmp_2 = code(x, y, z) tmp = 0.0; if ((x <= -1.46e-53) || ~((x <= 330000.0))) tmp = x * -3.0; else tmp = y * 4.0; end tmp_2 = tmp; end
code[x_, y_, z_] := If[Or[LessEqual[x, -1.46e-53], N[Not[LessEqual[x, 330000.0]], $MachinePrecision]], N[(x * -3.0), $MachinePrecision], N[(y * 4.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.46 \cdot 10^{-53} \lor \neg \left(x \leq 330000\right):\\
\;\;\;\;x \cdot -3\\
\mathbf{else}:\\
\;\;\;\;y \cdot 4\\
\end{array}
\end{array}
if x < -1.45999999999999989e-53 or 3.3e5 < x Initial program 99.6%
metadata-eval99.6%
Simplified99.6%
Taylor expanded in x around inf 79.4%
sub-neg79.4%
distribute-rgt-in79.4%
metadata-eval79.4%
distribute-lft-neg-in79.4%
associate-+r+79.4%
metadata-eval79.4%
distribute-rgt-neg-in79.4%
metadata-eval79.4%
Simplified79.4%
Taylor expanded in z around 0 40.8%
if -1.45999999999999989e-53 < x < 3.3e5Initial program 99.6%
metadata-eval99.6%
Simplified99.6%
Taylor expanded in y around inf 97.4%
Taylor expanded in x around 0 85.8%
Taylor expanded in z around 0 38.3%
Final simplification39.6%
(FPCore (x y z) :precision binary64 (+ x (* (* (- y x) 6.0) (- 0.6666666666666666 z))))
double code(double x, double y, double z) {
return x + (((y - x) * 6.0) * (0.6666666666666666 - z));
}
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 - x) * 6.0d0) * (0.6666666666666666d0 - z))
end function
public static double code(double x, double y, double z) {
return x + (((y - x) * 6.0) * (0.6666666666666666 - z));
}
def code(x, y, z): return x + (((y - x) * 6.0) * (0.6666666666666666 - z))
function code(x, y, z) return Float64(x + Float64(Float64(Float64(y - x) * 6.0) * Float64(0.6666666666666666 - z))) end
function tmp = code(x, y, z) tmp = x + (((y - x) * 6.0) * (0.6666666666666666 - z)); end
code[x_, y_, z_] := N[(x + N[(N[(N[(y - x), $MachinePrecision] * 6.0), $MachinePrecision] * N[(0.6666666666666666 - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + \left(\left(y - x\right) \cdot 6\right) \cdot \left(0.6666666666666666 - z\right)
\end{array}
Initial program 99.6%
metadata-eval99.6%
Simplified99.6%
Final simplification99.6%
(FPCore (x y z) :precision binary64 (* x -3.0))
double code(double x, double y, double z) {
return x * -3.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 * (-3.0d0)
end function
public static double code(double x, double y, double z) {
return x * -3.0;
}
def code(x, y, z): return x * -3.0
function code(x, y, z) return Float64(x * -3.0) end
function tmp = code(x, y, z) tmp = x * -3.0; end
code[x_, y_, z_] := N[(x * -3.0), $MachinePrecision]
\begin{array}{l}
\\
x \cdot -3
\end{array}
Initial program 99.6%
metadata-eval99.6%
Simplified99.6%
Taylor expanded in x around inf 48.3%
sub-neg48.3%
distribute-rgt-in48.3%
metadata-eval48.3%
distribute-lft-neg-in48.3%
associate-+r+48.3%
metadata-eval48.3%
distribute-rgt-neg-in48.3%
metadata-eval48.3%
Simplified48.3%
Taylor expanded in z around 0 25.3%
Final simplification25.3%
(FPCore (x y z) :precision binary64 x)
double code(double x, double y, double z) {
return x;
}
real(8) function code(x, y, z)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
code = x
end function
public static double code(double x, double y, double z) {
return x;
}
def code(x, y, z): return x
function code(x, y, z) return x end
function tmp = code(x, y, z) tmp = x; end
code[x_, y_, z_] := x
\begin{array}{l}
\\
x
\end{array}
Initial program 99.6%
metadata-eval99.6%
Simplified99.6%
Taylor expanded in z around inf 53.3%
Taylor expanded in z around 0 2.3%
Final simplification2.3%
herbie shell --seed 2024077
(FPCore (x y z)
:name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, D"
:precision binary64
(+ x (* (* (- y x) 6.0) (- (/ 2.0 3.0) z))))