
(FPCore (x y z t) :precision binary64 (+ (* x (+ (+ (+ (+ y z) z) y) t)) (* y 5.0)))
double code(double x, double y, double z, double t) {
return (x * ((((y + z) + z) + y) + t)) + (y * 5.0);
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = (x * ((((y + z) + z) + y) + t)) + (y * 5.0d0)
end function
public static double code(double x, double y, double z, double t) {
return (x * ((((y + z) + z) + y) + t)) + (y * 5.0);
}
def code(x, y, z, t): return (x * ((((y + z) + z) + y) + t)) + (y * 5.0)
function code(x, y, z, t) return Float64(Float64(x * Float64(Float64(Float64(Float64(y + z) + z) + y) + t)) + Float64(y * 5.0)) end
function tmp = code(x, y, z, t) tmp = (x * ((((y + z) + z) + y) + t)) + (y * 5.0); end
code[x_, y_, z_, t_] := N[(N[(x * N[(N[(N[(N[(y + z), $MachinePrecision] + z), $MachinePrecision] + y), $MachinePrecision] + t), $MachinePrecision]), $MachinePrecision] + N[(y * 5.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot \left(\left(\left(\left(y + z\right) + z\right) + y\right) + t\right) + y \cdot 5
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 16 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z t) :precision binary64 (+ (* x (+ (+ (+ (+ y z) z) y) t)) (* y 5.0)))
double code(double x, double y, double z, double t) {
return (x * ((((y + z) + z) + y) + t)) + (y * 5.0);
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = (x * ((((y + z) + z) + y) + t)) + (y * 5.0d0)
end function
public static double code(double x, double y, double z, double t) {
return (x * ((((y + z) + z) + y) + t)) + (y * 5.0);
}
def code(x, y, z, t): return (x * ((((y + z) + z) + y) + t)) + (y * 5.0)
function code(x, y, z, t) return Float64(Float64(x * Float64(Float64(Float64(Float64(y + z) + z) + y) + t)) + Float64(y * 5.0)) end
function tmp = code(x, y, z, t) tmp = (x * ((((y + z) + z) + y) + t)) + (y * 5.0); end
code[x_, y_, z_, t_] := N[(N[(x * N[(N[(N[(N[(y + z), $MachinePrecision] + z), $MachinePrecision] + y), $MachinePrecision] + t), $MachinePrecision]), $MachinePrecision] + N[(y * 5.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot \left(\left(\left(\left(y + z\right) + z\right) + y\right) + t\right) + y \cdot 5
\end{array}
(FPCore (x y z t) :precision binary64 (fma x (+ (* 2.0 (+ y z)) t) (* y 5.0)))
double code(double x, double y, double z, double t) {
return fma(x, ((2.0 * (y + z)) + t), (y * 5.0));
}
function code(x, y, z, t) return fma(x, Float64(Float64(2.0 * Float64(y + z)) + t), Float64(y * 5.0)) end
code[x_, y_, z_, t_] := N[(x * N[(N[(2.0 * N[(y + z), $MachinePrecision]), $MachinePrecision] + t), $MachinePrecision] + N[(y * 5.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\mathsf{fma}\left(x, 2 \cdot \left(y + z\right) + t, y \cdot 5\right)
\end{array}
Initial program 99.5%
fma-define99.5%
associate-+l+99.5%
+-commutative99.5%
count-299.5%
Simplified99.5%
(FPCore (x y z t) :precision binary64 (if (or (<= x -1.4e-80) (not (<= x 2.1e-12))) (* x (+ t (+ (* 2.0 (+ y z)) (* 5.0 (/ y x))))) (* y (+ 5.0 (/ (* x (+ t (* 2.0 z))) y)))))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -1.4e-80) || !(x <= 2.1e-12)) {
tmp = x * (t + ((2.0 * (y + z)) + (5.0 * (y / x))));
} else {
tmp = y * (5.0 + ((x * (t + (2.0 * z))) / y));
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-1.4d-80)) .or. (.not. (x <= 2.1d-12))) then
tmp = x * (t + ((2.0d0 * (y + z)) + (5.0d0 * (y / x))))
else
tmp = y * (5.0d0 + ((x * (t + (2.0d0 * z))) / y))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -1.4e-80) || !(x <= 2.1e-12)) {
tmp = x * (t + ((2.0 * (y + z)) + (5.0 * (y / x))));
} else {
tmp = y * (5.0 + ((x * (t + (2.0 * z))) / y));
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -1.4e-80) or not (x <= 2.1e-12): tmp = x * (t + ((2.0 * (y + z)) + (5.0 * (y / x)))) else: tmp = y * (5.0 + ((x * (t + (2.0 * z))) / y)) return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -1.4e-80) || !(x <= 2.1e-12)) tmp = Float64(x * Float64(t + Float64(Float64(2.0 * Float64(y + z)) + Float64(5.0 * Float64(y / x))))); else tmp = Float64(y * Float64(5.0 + Float64(Float64(x * Float64(t + Float64(2.0 * z))) / y))); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -1.4e-80) || ~((x <= 2.1e-12))) tmp = x * (t + ((2.0 * (y + z)) + (5.0 * (y / x)))); else tmp = y * (5.0 + ((x * (t + (2.0 * z))) / y)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -1.4e-80], N[Not[LessEqual[x, 2.1e-12]], $MachinePrecision]], N[(x * N[(t + N[(N[(2.0 * N[(y + z), $MachinePrecision]), $MachinePrecision] + N[(5.0 * N[(y / x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(y * N[(5.0 + N[(N[(x * N[(t + N[(2.0 * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.4 \cdot 10^{-80} \lor \neg \left(x \leq 2.1 \cdot 10^{-12}\right):\\
\;\;\;\;x \cdot \left(t + \left(2 \cdot \left(y + z\right) + 5 \cdot \frac{y}{x}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot \left(5 + \frac{x \cdot \left(t + 2 \cdot z\right)}{y}\right)\\
\end{array}
\end{array}
if x < -1.39999999999999995e-80 or 2.09999999999999994e-12 < x Initial program 99.3%
fma-define99.3%
associate-+l+99.3%
+-commutative99.3%
count-299.3%
Simplified99.3%
Taylor expanded in x around inf 100.0%
if -1.39999999999999995e-80 < x < 2.09999999999999994e-12Initial program 99.9%
Taylor expanded in y around inf 96.8%
Taylor expanded in y around 0 96.6%
Final simplification98.7%
(FPCore (x y z t) :precision binary64 (if (or (<= x -1.2e-33) (not (<= x 1.26))) (* x (+ (* 2.0 (+ y z)) t)) (* y (+ 5.0 (/ (* x (+ t (* 2.0 z))) y)))))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -1.2e-33) || !(x <= 1.26)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = y * (5.0 + ((x * (t + (2.0 * z))) / y));
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-1.2d-33)) .or. (.not. (x <= 1.26d0))) then
tmp = x * ((2.0d0 * (y + z)) + t)
else
tmp = y * (5.0d0 + ((x * (t + (2.0d0 * z))) / y))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -1.2e-33) || !(x <= 1.26)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = y * (5.0 + ((x * (t + (2.0 * z))) / y));
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -1.2e-33) or not (x <= 1.26): tmp = x * ((2.0 * (y + z)) + t) else: tmp = y * (5.0 + ((x * (t + (2.0 * z))) / y)) return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -1.2e-33) || !(x <= 1.26)) tmp = Float64(x * Float64(Float64(2.0 * Float64(y + z)) + t)); else tmp = Float64(y * Float64(5.0 + Float64(Float64(x * Float64(t + Float64(2.0 * z))) / y))); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -1.2e-33) || ~((x <= 1.26))) tmp = x * ((2.0 * (y + z)) + t); else tmp = y * (5.0 + ((x * (t + (2.0 * z))) / y)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -1.2e-33], N[Not[LessEqual[x, 1.26]], $MachinePrecision]], N[(x * N[(N[(2.0 * N[(y + z), $MachinePrecision]), $MachinePrecision] + t), $MachinePrecision]), $MachinePrecision], N[(y * N[(5.0 + N[(N[(x * N[(t + N[(2.0 * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.2 \cdot 10^{-33} \lor \neg \left(x \leq 1.26\right):\\
\;\;\;\;x \cdot \left(2 \cdot \left(y + z\right) + t\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot \left(5 + \frac{x \cdot \left(t + 2 \cdot z\right)}{y}\right)\\
\end{array}
\end{array}
if x < -1.2e-33 or 1.26000000000000001 < x Initial program 99.3%
fma-define99.3%
associate-+l+99.3%
+-commutative99.3%
count-299.3%
Simplified99.3%
Taylor expanded in x around inf 97.6%
if -1.2e-33 < x < 1.26000000000000001Initial program 99.8%
Taylor expanded in y around inf 95.3%
Taylor expanded in y around 0 94.8%
Final simplification96.4%
(FPCore (x y z t) :precision binary64 (if (or (<= x -1.38e-30) (not (<= x 5.2e-46))) (* x (+ (* 2.0 (+ y z)) t)) (+ (* y 5.0) (* (+ y z) (* x 2.0)))))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -1.38e-30) || !(x <= 5.2e-46)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = (y * 5.0) + ((y + z) * (x * 2.0));
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-1.38d-30)) .or. (.not. (x <= 5.2d-46))) then
tmp = x * ((2.0d0 * (y + z)) + t)
else
tmp = (y * 5.0d0) + ((y + z) * (x * 2.0d0))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -1.38e-30) || !(x <= 5.2e-46)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = (y * 5.0) + ((y + z) * (x * 2.0));
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -1.38e-30) or not (x <= 5.2e-46): tmp = x * ((2.0 * (y + z)) + t) else: tmp = (y * 5.0) + ((y + z) * (x * 2.0)) return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -1.38e-30) || !(x <= 5.2e-46)) tmp = Float64(x * Float64(Float64(2.0 * Float64(y + z)) + t)); else tmp = Float64(Float64(y * 5.0) + Float64(Float64(y + z) * Float64(x * 2.0))); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -1.38e-30) || ~((x <= 5.2e-46))) tmp = x * ((2.0 * (y + z)) + t); else tmp = (y * 5.0) + ((y + z) * (x * 2.0)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -1.38e-30], N[Not[LessEqual[x, 5.2e-46]], $MachinePrecision]], N[(x * N[(N[(2.0 * N[(y + z), $MachinePrecision]), $MachinePrecision] + t), $MachinePrecision]), $MachinePrecision], N[(N[(y * 5.0), $MachinePrecision] + N[(N[(y + z), $MachinePrecision] * N[(x * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.38 \cdot 10^{-30} \lor \neg \left(x \leq 5.2 \cdot 10^{-46}\right):\\
\;\;\;\;x \cdot \left(2 \cdot \left(y + z\right) + t\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot 5 + \left(y + z\right) \cdot \left(x \cdot 2\right)\\
\end{array}
\end{array}
if x < -1.38000000000000008e-30 or 5.2000000000000004e-46 < x Initial program 99.3%
fma-define99.3%
associate-+l+99.3%
+-commutative99.3%
count-299.3%
Simplified99.3%
Taylor expanded in x around inf 96.9%
if -1.38000000000000008e-30 < x < 5.2000000000000004e-46Initial program 99.8%
Taylor expanded in t around 0 88.8%
Simplified88.8%
Final simplification93.7%
(FPCore (x y z t) :precision binary64 (if (<= t 1.05e+109) (+ (* x (+ t (* 2.0 z))) (* y (+ 5.0 (* x 2.0)))) (+ (* y 5.0) (* x (+ t (+ y y))))))
double code(double x, double y, double z, double t) {
double tmp;
if (t <= 1.05e+109) {
tmp = (x * (t + (2.0 * z))) + (y * (5.0 + (x * 2.0)));
} else {
tmp = (y * 5.0) + (x * (t + (y + y)));
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if (t <= 1.05d+109) then
tmp = (x * (t + (2.0d0 * z))) + (y * (5.0d0 + (x * 2.0d0)))
else
tmp = (y * 5.0d0) + (x * (t + (y + y)))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if (t <= 1.05e+109) {
tmp = (x * (t + (2.0 * z))) + (y * (5.0 + (x * 2.0)));
} else {
tmp = (y * 5.0) + (x * (t + (y + y)));
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if t <= 1.05e+109: tmp = (x * (t + (2.0 * z))) + (y * (5.0 + (x * 2.0))) else: tmp = (y * 5.0) + (x * (t + (y + y))) return tmp
function code(x, y, z, t) tmp = 0.0 if (t <= 1.05e+109) tmp = Float64(Float64(x * Float64(t + Float64(2.0 * z))) + Float64(y * Float64(5.0 + Float64(x * 2.0)))); else tmp = Float64(Float64(y * 5.0) + Float64(x * Float64(t + Float64(y + y)))); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if (t <= 1.05e+109) tmp = (x * (t + (2.0 * z))) + (y * (5.0 + (x * 2.0))); else tmp = (y * 5.0) + (x * (t + (y + y))); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[LessEqual[t, 1.05e+109], N[(N[(x * N[(t + N[(2.0 * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(y * N[(5.0 + N[(x * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(y * 5.0), $MachinePrecision] + N[(x * N[(t + N[(y + y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;t \leq 1.05 \cdot 10^{+109}:\\
\;\;\;\;x \cdot \left(t + 2 \cdot z\right) + y \cdot \left(5 + x \cdot 2\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot 5 + x \cdot \left(t + \left(y + y\right)\right)\\
\end{array}
\end{array}
if t < 1.0500000000000001e109Initial program 99.4%
Taylor expanded in y around 0 98.0%
if 1.0500000000000001e109 < t Initial program 99.9%
Taylor expanded in y around inf 99.9%
Final simplification98.4%
(FPCore (x y z t) :precision binary64 (if (or (<= x -4.8e-31) (not (<= x 1.4e-46))) (* x (+ (* 2.0 (+ y z)) t)) (+ (* y 5.0) (* z (* x 2.0)))))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -4.8e-31) || !(x <= 1.4e-46)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = (y * 5.0) + (z * (x * 2.0));
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-4.8d-31)) .or. (.not. (x <= 1.4d-46))) then
tmp = x * ((2.0d0 * (y + z)) + t)
else
tmp = (y * 5.0d0) + (z * (x * 2.0d0))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -4.8e-31) || !(x <= 1.4e-46)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = (y * 5.0) + (z * (x * 2.0));
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -4.8e-31) or not (x <= 1.4e-46): tmp = x * ((2.0 * (y + z)) + t) else: tmp = (y * 5.0) + (z * (x * 2.0)) return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -4.8e-31) || !(x <= 1.4e-46)) tmp = Float64(x * Float64(Float64(2.0 * Float64(y + z)) + t)); else tmp = Float64(Float64(y * 5.0) + Float64(z * Float64(x * 2.0))); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -4.8e-31) || ~((x <= 1.4e-46))) tmp = x * ((2.0 * (y + z)) + t); else tmp = (y * 5.0) + (z * (x * 2.0)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -4.8e-31], N[Not[LessEqual[x, 1.4e-46]], $MachinePrecision]], N[(x * N[(N[(2.0 * N[(y + z), $MachinePrecision]), $MachinePrecision] + t), $MachinePrecision]), $MachinePrecision], N[(N[(y * 5.0), $MachinePrecision] + N[(z * N[(x * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -4.8 \cdot 10^{-31} \lor \neg \left(x \leq 1.4 \cdot 10^{-46}\right):\\
\;\;\;\;x \cdot \left(2 \cdot \left(y + z\right) + t\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot 5 + z \cdot \left(x \cdot 2\right)\\
\end{array}
\end{array}
if x < -4.8e-31 or 1.3999999999999999e-46 < x Initial program 99.3%
fma-define99.3%
associate-+l+99.3%
+-commutative99.3%
count-299.3%
Simplified99.3%
Taylor expanded in x around inf 96.9%
if -4.8e-31 < x < 1.3999999999999999e-46Initial program 99.8%
Taylor expanded in t around 0 88.8%
Simplified88.8%
Taylor expanded in y around 0 88.8%
Final simplification93.7%
(FPCore (x y z t) :precision binary64 (if (or (<= x -1.65e-59) (not (<= x 1.65e-46))) (* x (+ (* 2.0 (+ y z)) t)) (+ (* y 5.0) (* x t))))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -1.65e-59) || !(x <= 1.65e-46)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = (y * 5.0) + (x * t);
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-1.65d-59)) .or. (.not. (x <= 1.65d-46))) then
tmp = x * ((2.0d0 * (y + z)) + t)
else
tmp = (y * 5.0d0) + (x * t)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -1.65e-59) || !(x <= 1.65e-46)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = (y * 5.0) + (x * t);
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -1.65e-59) or not (x <= 1.65e-46): tmp = x * ((2.0 * (y + z)) + t) else: tmp = (y * 5.0) + (x * t) return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -1.65e-59) || !(x <= 1.65e-46)) tmp = Float64(x * Float64(Float64(2.0 * Float64(y + z)) + t)); else tmp = Float64(Float64(y * 5.0) + Float64(x * t)); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -1.65e-59) || ~((x <= 1.65e-46))) tmp = x * ((2.0 * (y + z)) + t); else tmp = (y * 5.0) + (x * t); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -1.65e-59], N[Not[LessEqual[x, 1.65e-46]], $MachinePrecision]], N[(x * N[(N[(2.0 * N[(y + z), $MachinePrecision]), $MachinePrecision] + t), $MachinePrecision]), $MachinePrecision], N[(N[(y * 5.0), $MachinePrecision] + N[(x * t), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.65 \cdot 10^{-59} \lor \neg \left(x \leq 1.65 \cdot 10^{-46}\right):\\
\;\;\;\;x \cdot \left(2 \cdot \left(y + z\right) + t\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot 5 + x \cdot t\\
\end{array}
\end{array}
if x < -1.64999999999999991e-59 or 1.65000000000000007e-46 < x Initial program 99.3%
fma-define99.3%
associate-+l+99.3%
+-commutative99.3%
count-299.3%
Simplified99.3%
Taylor expanded in x around inf 95.8%
if -1.64999999999999991e-59 < x < 1.65000000000000007e-46Initial program 99.8%
Taylor expanded in y around inf 84.5%
+-commutative84.5%
distribute-lft-in84.5%
flip-+0.0%
+-inverses0.0%
+-inverses0.0%
Applied egg-rr0.0%
Simplified84.5%
Final simplification91.6%
(FPCore (x y z t) :precision binary64 (if (or (<= x -4.3e-61) (not (<= x 8.5e-46))) (* x (+ (* 2.0 (+ y z)) t)) (* y (+ 5.0 (* t (/ x y))))))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -4.3e-61) || !(x <= 8.5e-46)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = y * (5.0 + (t * (x / y)));
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-4.3d-61)) .or. (.not. (x <= 8.5d-46))) then
tmp = x * ((2.0d0 * (y + z)) + t)
else
tmp = y * (5.0d0 + (t * (x / y)))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -4.3e-61) || !(x <= 8.5e-46)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = y * (5.0 + (t * (x / y)));
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -4.3e-61) or not (x <= 8.5e-46): tmp = x * ((2.0 * (y + z)) + t) else: tmp = y * (5.0 + (t * (x / y))) return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -4.3e-61) || !(x <= 8.5e-46)) tmp = Float64(x * Float64(Float64(2.0 * Float64(y + z)) + t)); else tmp = Float64(y * Float64(5.0 + Float64(t * Float64(x / y)))); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -4.3e-61) || ~((x <= 8.5e-46))) tmp = x * ((2.0 * (y + z)) + t); else tmp = y * (5.0 + (t * (x / y))); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -4.3e-61], N[Not[LessEqual[x, 8.5e-46]], $MachinePrecision]], N[(x * N[(N[(2.0 * N[(y + z), $MachinePrecision]), $MachinePrecision] + t), $MachinePrecision]), $MachinePrecision], N[(y * N[(5.0 + N[(t * N[(x / y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -4.3 \cdot 10^{-61} \lor \neg \left(x \leq 8.5 \cdot 10^{-46}\right):\\
\;\;\;\;x \cdot \left(2 \cdot \left(y + z\right) + t\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot \left(5 + t \cdot \frac{x}{y}\right)\\
\end{array}
\end{array}
if x < -4.3000000000000003e-61 or 8.5000000000000001e-46 < x Initial program 99.3%
fma-define99.3%
associate-+l+99.3%
+-commutative99.3%
count-299.3%
Simplified99.3%
Taylor expanded in x around inf 95.8%
if -4.3000000000000003e-61 < x < 8.5000000000000001e-46Initial program 99.8%
Taylor expanded in y around inf 95.6%
Taylor expanded in y around 0 95.6%
Taylor expanded in z around 0 82.4%
associate-/l*82.4%
Simplified82.4%
Final simplification90.9%
(FPCore (x y z t) :precision binary64 (if (or (<= x -3e-73) (not (<= x 3.3e-94))) (* x (+ (* 2.0 (+ y z)) t)) (* y (+ 5.0 (* x 2.0)))))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -3e-73) || !(x <= 3.3e-94)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = y * (5.0 + (x * 2.0));
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-3d-73)) .or. (.not. (x <= 3.3d-94))) then
tmp = x * ((2.0d0 * (y + z)) + t)
else
tmp = y * (5.0d0 + (x * 2.0d0))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -3e-73) || !(x <= 3.3e-94)) {
tmp = x * ((2.0 * (y + z)) + t);
} else {
tmp = y * (5.0 + (x * 2.0));
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -3e-73) or not (x <= 3.3e-94): tmp = x * ((2.0 * (y + z)) + t) else: tmp = y * (5.0 + (x * 2.0)) return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -3e-73) || !(x <= 3.3e-94)) tmp = Float64(x * Float64(Float64(2.0 * Float64(y + z)) + t)); else tmp = Float64(y * Float64(5.0 + Float64(x * 2.0))); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -3e-73) || ~((x <= 3.3e-94))) tmp = x * ((2.0 * (y + z)) + t); else tmp = y * (5.0 + (x * 2.0)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -3e-73], N[Not[LessEqual[x, 3.3e-94]], $MachinePrecision]], N[(x * N[(N[(2.0 * N[(y + z), $MachinePrecision]), $MachinePrecision] + t), $MachinePrecision]), $MachinePrecision], N[(y * N[(5.0 + N[(x * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -3 \cdot 10^{-73} \lor \neg \left(x \leq 3.3 \cdot 10^{-94}\right):\\
\;\;\;\;x \cdot \left(2 \cdot \left(y + z\right) + t\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot \left(5 + x \cdot 2\right)\\
\end{array}
\end{array}
if x < -3e-73 or 3.3000000000000001e-94 < x Initial program 99.4%
fma-define99.4%
associate-+l+99.4%
+-commutative99.4%
count-299.4%
Simplified99.4%
Taylor expanded in x around inf 93.8%
if -3e-73 < x < 3.3000000000000001e-94Initial program 99.8%
Taylor expanded in y around inf 75.1%
Simplified75.1%
Final simplification87.4%
(FPCore (x y z t) :precision binary64 (if (<= x -1.65e+168) (* z (* x 2.0)) (if (or (<= x -1.25e-37) (not (<= x 2e-46))) (* x t) (* y 5.0))))
double code(double x, double y, double z, double t) {
double tmp;
if (x <= -1.65e+168) {
tmp = z * (x * 2.0);
} else if ((x <= -1.25e-37) || !(x <= 2e-46)) {
tmp = x * t;
} else {
tmp = y * 5.0;
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if (x <= (-1.65d+168)) then
tmp = z * (x * 2.0d0)
else if ((x <= (-1.25d-37)) .or. (.not. (x <= 2d-46))) then
tmp = x * t
else
tmp = y * 5.0d0
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if (x <= -1.65e+168) {
tmp = z * (x * 2.0);
} else if ((x <= -1.25e-37) || !(x <= 2e-46)) {
tmp = x * t;
} else {
tmp = y * 5.0;
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if x <= -1.65e+168: tmp = z * (x * 2.0) elif (x <= -1.25e-37) or not (x <= 2e-46): tmp = x * t else: tmp = y * 5.0 return tmp
function code(x, y, z, t) tmp = 0.0 if (x <= -1.65e+168) tmp = Float64(z * Float64(x * 2.0)); elseif ((x <= -1.25e-37) || !(x <= 2e-46)) tmp = Float64(x * t); else tmp = Float64(y * 5.0); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if (x <= -1.65e+168) tmp = z * (x * 2.0); elseif ((x <= -1.25e-37) || ~((x <= 2e-46))) tmp = x * t; else tmp = y * 5.0; end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[LessEqual[x, -1.65e+168], N[(z * N[(x * 2.0), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[x, -1.25e-37], N[Not[LessEqual[x, 2e-46]], $MachinePrecision]], N[(x * t), $MachinePrecision], N[(y * 5.0), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -1.65 \cdot 10^{+168}:\\
\;\;\;\;z \cdot \left(x \cdot 2\right)\\
\mathbf{elif}\;x \leq -1.25 \cdot 10^{-37} \lor \neg \left(x \leq 2 \cdot 10^{-46}\right):\\
\;\;\;\;x \cdot t\\
\mathbf{else}:\\
\;\;\;\;y \cdot 5\\
\end{array}
\end{array}
if x < -1.6499999999999999e168Initial program 97.3%
Taylor expanded in z around inf 56.4%
Simplified56.4%
if -1.6499999999999999e168 < x < -1.2499999999999999e-37 or 2.00000000000000005e-46 < x Initial program 100.0%
Taylor expanded in t around inf 46.3%
Simplified46.3%
if -1.2499999999999999e-37 < x < 2.00000000000000005e-46Initial program 99.8%
Taylor expanded in x around 0 71.5%
Final simplification57.6%
(FPCore (x y z t) :precision binary64 (if (or (<= y -6.8e+39) (not (<= y 9.8e+42))) (* y (+ 5.0 (* x 2.0))) (* x (+ t (* 2.0 z)))))
double code(double x, double y, double z, double t) {
double tmp;
if ((y <= -6.8e+39) || !(y <= 9.8e+42)) {
tmp = y * (5.0 + (x * 2.0));
} else {
tmp = x * (t + (2.0 * z));
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((y <= (-6.8d+39)) .or. (.not. (y <= 9.8d+42))) then
tmp = y * (5.0d0 + (x * 2.0d0))
else
tmp = x * (t + (2.0d0 * z))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((y <= -6.8e+39) || !(y <= 9.8e+42)) {
tmp = y * (5.0 + (x * 2.0));
} else {
tmp = x * (t + (2.0 * z));
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (y <= -6.8e+39) or not (y <= 9.8e+42): tmp = y * (5.0 + (x * 2.0)) else: tmp = x * (t + (2.0 * z)) return tmp
function code(x, y, z, t) tmp = 0.0 if ((y <= -6.8e+39) || !(y <= 9.8e+42)) tmp = Float64(y * Float64(5.0 + Float64(x * 2.0))); else tmp = Float64(x * Float64(t + Float64(2.0 * z))); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((y <= -6.8e+39) || ~((y <= 9.8e+42))) tmp = y * (5.0 + (x * 2.0)); else tmp = x * (t + (2.0 * z)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[y, -6.8e+39], N[Not[LessEqual[y, 9.8e+42]], $MachinePrecision]], N[(y * N[(5.0 + N[(x * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x * N[(t + N[(2.0 * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y \leq -6.8 \cdot 10^{+39} \lor \neg \left(y \leq 9.8 \cdot 10^{+42}\right):\\
\;\;\;\;y \cdot \left(5 + x \cdot 2\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(t + 2 \cdot z\right)\\
\end{array}
\end{array}
if y < -6.7999999999999998e39 or 9.8000000000000004e42 < y Initial program 99.1%
Taylor expanded in y around inf 79.7%
Simplified79.7%
if -6.7999999999999998e39 < y < 9.8000000000000004e42Initial program 99.9%
Taylor expanded in y around 0 81.5%
Final simplification80.7%
(FPCore (x y z t) :precision binary64 (if (or (<= x -2.15e-80) (not (<= x 7.8e-94))) (* x (+ t (* 2.0 z))) (* y 5.0)))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -2.15e-80) || !(x <= 7.8e-94)) {
tmp = x * (t + (2.0 * z));
} else {
tmp = y * 5.0;
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-2.15d-80)) .or. (.not. (x <= 7.8d-94))) then
tmp = x * (t + (2.0d0 * z))
else
tmp = y * 5.0d0
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -2.15e-80) || !(x <= 7.8e-94)) {
tmp = x * (t + (2.0 * z));
} else {
tmp = y * 5.0;
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -2.15e-80) or not (x <= 7.8e-94): tmp = x * (t + (2.0 * z)) else: tmp = y * 5.0 return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -2.15e-80) || !(x <= 7.8e-94)) tmp = Float64(x * Float64(t + Float64(2.0 * z))); else tmp = Float64(y * 5.0); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -2.15e-80) || ~((x <= 7.8e-94))) tmp = x * (t + (2.0 * z)); else tmp = y * 5.0; end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -2.15e-80], N[Not[LessEqual[x, 7.8e-94]], $MachinePrecision]], N[(x * N[(t + N[(2.0 * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(y * 5.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -2.15 \cdot 10^{-80} \lor \neg \left(x \leq 7.8 \cdot 10^{-94}\right):\\
\;\;\;\;x \cdot \left(t + 2 \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot 5\\
\end{array}
\end{array}
if x < -2.1500000000000001e-80 or 7.8000000000000004e-94 < x Initial program 99.4%
Taylor expanded in y around 0 74.6%
if -2.1500000000000001e-80 < x < 7.8000000000000004e-94Initial program 99.8%
Taylor expanded in x around 0 75.6%
Final simplification75.0%
(FPCore (x y z t) :precision binary64 (if (or (<= x -2.6e-63) (not (<= x 4.2e-46))) (* x (* 2.0 (+ y z))) (* y 5.0)))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -2.6e-63) || !(x <= 4.2e-46)) {
tmp = x * (2.0 * (y + z));
} else {
tmp = y * 5.0;
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-2.6d-63)) .or. (.not. (x <= 4.2d-46))) then
tmp = x * (2.0d0 * (y + z))
else
tmp = y * 5.0d0
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -2.6e-63) || !(x <= 4.2e-46)) {
tmp = x * (2.0 * (y + z));
} else {
tmp = y * 5.0;
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -2.6e-63) or not (x <= 4.2e-46): tmp = x * (2.0 * (y + z)) else: tmp = y * 5.0 return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -2.6e-63) || !(x <= 4.2e-46)) tmp = Float64(x * Float64(2.0 * Float64(y + z))); else tmp = Float64(y * 5.0); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -2.6e-63) || ~((x <= 4.2e-46))) tmp = x * (2.0 * (y + z)); else tmp = y * 5.0; end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -2.6e-63], N[Not[LessEqual[x, 4.2e-46]], $MachinePrecision]], N[(x * N[(2.0 * N[(y + z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(y * 5.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -2.6 \cdot 10^{-63} \lor \neg \left(x \leq 4.2 \cdot 10^{-46}\right):\\
\;\;\;\;x \cdot \left(2 \cdot \left(y + z\right)\right)\\
\mathbf{else}:\\
\;\;\;\;y \cdot 5\\
\end{array}
\end{array}
if x < -2.6000000000000001e-63 or 4.19999999999999975e-46 < x Initial program 99.3%
Taylor expanded in t around 0 64.6%
Simplified64.6%
Taylor expanded in x around inf 61.1%
*-commutative61.1%
+-commutative61.1%
associate-*l*61.1%
*-commutative61.1%
+-commutative61.1%
Simplified61.1%
if -2.6000000000000001e-63 < x < 4.19999999999999975e-46Initial program 99.8%
Taylor expanded in x around 0 73.0%
Final simplification65.5%
(FPCore (x y z t) :precision binary64 (+ (* y 5.0) (* x (+ t (+ y (+ z (+ y z)))))))
double code(double x, double y, double z, double t) {
return (y * 5.0) + (x * (t + (y + (z + (y + z)))));
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = (y * 5.0d0) + (x * (t + (y + (z + (y + z)))))
end function
public static double code(double x, double y, double z, double t) {
return (y * 5.0) + (x * (t + (y + (z + (y + z)))));
}
def code(x, y, z, t): return (y * 5.0) + (x * (t + (y + (z + (y + z)))))
function code(x, y, z, t) return Float64(Float64(y * 5.0) + Float64(x * Float64(t + Float64(y + Float64(z + Float64(y + z)))))) end
function tmp = code(x, y, z, t) tmp = (y * 5.0) + (x * (t + (y + (z + (y + z))))); end
code[x_, y_, z_, t_] := N[(N[(y * 5.0), $MachinePrecision] + N[(x * N[(t + N[(y + N[(z + N[(y + z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
y \cdot 5 + x \cdot \left(t + \left(y + \left(z + \left(y + z\right)\right)\right)\right)
\end{array}
Initial program 99.5%
Final simplification99.5%
(FPCore (x y z t) :precision binary64 (if (or (<= x -6.5e-32) (not (<= x 1.05e-45))) (* x t) (* y 5.0)))
double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -6.5e-32) || !(x <= 1.05e-45)) {
tmp = x * t;
} else {
tmp = y * 5.0;
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: tmp
if ((x <= (-6.5d-32)) .or. (.not. (x <= 1.05d-45))) then
tmp = x * t
else
tmp = y * 5.0d0
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x <= -6.5e-32) || !(x <= 1.05e-45)) {
tmp = x * t;
} else {
tmp = y * 5.0;
}
return tmp;
}
def code(x, y, z, t): tmp = 0 if (x <= -6.5e-32) or not (x <= 1.05e-45): tmp = x * t else: tmp = y * 5.0 return tmp
function code(x, y, z, t) tmp = 0.0 if ((x <= -6.5e-32) || !(x <= 1.05e-45)) tmp = Float64(x * t); else tmp = Float64(y * 5.0); end return tmp end
function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x <= -6.5e-32) || ~((x <= 1.05e-45))) tmp = x * t; else tmp = y * 5.0; end tmp_2 = tmp; end
code[x_, y_, z_, t_] := If[Or[LessEqual[x, -6.5e-32], N[Not[LessEqual[x, 1.05e-45]], $MachinePrecision]], N[(x * t), $MachinePrecision], N[(y * 5.0), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;x \leq -6.5 \cdot 10^{-32} \lor \neg \left(x \leq 1.05 \cdot 10^{-45}\right):\\
\;\;\;\;x \cdot t\\
\mathbf{else}:\\
\;\;\;\;y \cdot 5\\
\end{array}
\end{array}
if x < -6.49999999999999988e-32 or 1.04999999999999998e-45 < x Initial program 99.3%
Taylor expanded in t around inf 45.9%
Simplified45.9%
if -6.49999999999999988e-32 < x < 1.04999999999999998e-45Initial program 99.8%
Taylor expanded in x around 0 71.5%
Final simplification55.9%
(FPCore (x y z t) :precision binary64 (* y 5.0))
double code(double x, double y, double z, double t) {
return y * 5.0;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = y * 5.0d0
end function
public static double code(double x, double y, double z, double t) {
return y * 5.0;
}
def code(x, y, z, t): return y * 5.0
function code(x, y, z, t) return Float64(y * 5.0) end
function tmp = code(x, y, z, t) tmp = y * 5.0; end
code[x_, y_, z_, t_] := N[(y * 5.0), $MachinePrecision]
\begin{array}{l}
\\
y \cdot 5
\end{array}
Initial program 99.5%
Taylor expanded in x around 0 30.6%
Final simplification30.6%
herbie shell --seed 2024137
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Legend:renderLegendOutside from plot-0.2.3.4, B"
:precision binary64
(+ (* x (+ (+ (+ (+ y z) z) y) t)) (* y 5.0)))