
(FPCore (x y z t) :precision binary64 (- (* x x) (* (* y 4.0) (- (* z z) t))))
double code(double x, double y, double z, double t) {
return (x * x) - ((y * 4.0) * ((z * z) - t));
}
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 * x) - ((y * 4.0d0) * ((z * z) - t))
end function
public static double code(double x, double y, double z, double t) {
return (x * x) - ((y * 4.0) * ((z * z) - t));
}
def code(x, y, z, t): return (x * x) - ((y * 4.0) * ((z * z) - t))
function code(x, y, z, t) return Float64(Float64(x * x) - Float64(Float64(y * 4.0) * Float64(Float64(z * z) - t))) end
function tmp = code(x, y, z, t) tmp = (x * x) - ((y * 4.0) * ((z * z) - t)); end
code[x_, y_, z_, t_] := N[(N[(x * x), $MachinePrecision] - N[(N[(y * 4.0), $MachinePrecision] * N[(N[(z * z), $MachinePrecision] - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 11 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z t) :precision binary64 (- (* x x) (* (* y 4.0) (- (* z z) t))))
double code(double x, double y, double z, double t) {
return (x * x) - ((y * 4.0) * ((z * z) - t));
}
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 * x) - ((y * 4.0d0) * ((z * z) - t))
end function
public static double code(double x, double y, double z, double t) {
return (x * x) - ((y * 4.0) * ((z * z) - t));
}
def code(x, y, z, t): return (x * x) - ((y * 4.0) * ((z * z) - t))
function code(x, y, z, t) return Float64(Float64(x * x) - Float64(Float64(y * 4.0) * Float64(Float64(z * z) - t))) end
function tmp = code(x, y, z, t) tmp = (x * x) - ((y * 4.0) * ((z * z) - t)); end
code[x_, y_, z_, t_] := N[(N[(x * x), $MachinePrecision] - N[(N[(y * 4.0), $MachinePrecision] * N[(N[(z * z), $MachinePrecision] - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\end{array}
NOTE: z should be positive before calling this function (FPCore (x y z t) :precision binary64 (if (<= z 9.2e+167) (fma x x (* (- (* z z) t) (* y -4.0))) (* z (* z (* y -4.0)))))
z = abs(z);
double code(double x, double y, double z, double t) {
double tmp;
if (z <= 9.2e+167) {
tmp = fma(x, x, (((z * z) - t) * (y * -4.0)));
} else {
tmp = z * (z * (y * -4.0));
}
return tmp;
}
z = abs(z) function code(x, y, z, t) tmp = 0.0 if (z <= 9.2e+167) tmp = fma(x, x, Float64(Float64(Float64(z * z) - t) * Float64(y * -4.0))); else tmp = Float64(z * Float64(z * Float64(y * -4.0))); end return tmp end
NOTE: z should be positive before calling this function code[x_, y_, z_, t_] := If[LessEqual[z, 9.2e+167], N[(x * x + N[(N[(N[(z * z), $MachinePrecision] - t), $MachinePrecision] * N[(y * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(z * N[(z * N[(y * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
\mathbf{if}\;z \leq 9.2 \cdot 10^{+167}:\\
\;\;\;\;\mathsf{fma}\left(x, x, \left(z \cdot z - t\right) \cdot \left(y \cdot -4\right)\right)\\
\mathbf{else}:\\
\;\;\;\;z \cdot \left(z \cdot \left(y \cdot -4\right)\right)\\
\end{array}
\end{array}
if z < 9.19999999999999952e167Initial program 91.6%
fma-neg95.0%
*-commutative95.0%
distribute-rgt-neg-in95.0%
distribute-rgt-neg-in95.0%
metadata-eval95.0%
Simplified95.0%
if 9.19999999999999952e167 < z Initial program 78.9%
Taylor expanded in z around inf 78.9%
metadata-eval78.9%
distribute-lft-neg-in78.9%
*-commutative78.9%
unpow278.9%
*-commutative78.9%
associate-*r*78.9%
associate-*l*95.7%
distribute-rgt-neg-in95.7%
distribute-rgt-neg-in95.7%
distribute-rgt-neg-in95.7%
metadata-eval95.7%
Simplified95.7%
Final simplification95.1%
NOTE: z should be positive before calling this function
(FPCore (x y z t)
:precision binary64
(let* ((t_1 (* -4.0 (* (* z z) y))) (t_2 (* t (* y 4.0))))
(if (<= (* x x) 1.28e-267)
t_2
(if (<= (* x x) 1.72e-239)
t_1
(if (<= (* x x) 1.55e-173)
t_2
(if (<= (* x x) 1.65e+19) t_1 (* x x)))))))z = abs(z);
double code(double x, double y, double z, double t) {
double t_1 = -4.0 * ((z * z) * y);
double t_2 = t * (y * 4.0);
double tmp;
if ((x * x) <= 1.28e-267) {
tmp = t_2;
} else if ((x * x) <= 1.72e-239) {
tmp = t_1;
} else if ((x * x) <= 1.55e-173) {
tmp = t_2;
} else if ((x * x) <= 1.65e+19) {
tmp = t_1;
} else {
tmp = x * x;
}
return tmp;
}
NOTE: z should be positive before calling this function
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) :: t_1
real(8) :: t_2
real(8) :: tmp
t_1 = (-4.0d0) * ((z * z) * y)
t_2 = t * (y * 4.0d0)
if ((x * x) <= 1.28d-267) then
tmp = t_2
else if ((x * x) <= 1.72d-239) then
tmp = t_1
else if ((x * x) <= 1.55d-173) then
tmp = t_2
else if ((x * x) <= 1.65d+19) then
tmp = t_1
else
tmp = x * x
end if
code = tmp
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
double t_1 = -4.0 * ((z * z) * y);
double t_2 = t * (y * 4.0);
double tmp;
if ((x * x) <= 1.28e-267) {
tmp = t_2;
} else if ((x * x) <= 1.72e-239) {
tmp = t_1;
} else if ((x * x) <= 1.55e-173) {
tmp = t_2;
} else if ((x * x) <= 1.65e+19) {
tmp = t_1;
} else {
tmp = x * x;
}
return tmp;
}
z = abs(z) def code(x, y, z, t): t_1 = -4.0 * ((z * z) * y) t_2 = t * (y * 4.0) tmp = 0 if (x * x) <= 1.28e-267: tmp = t_2 elif (x * x) <= 1.72e-239: tmp = t_1 elif (x * x) <= 1.55e-173: tmp = t_2 elif (x * x) <= 1.65e+19: tmp = t_1 else: tmp = x * x return tmp
z = abs(z) function code(x, y, z, t) t_1 = Float64(-4.0 * Float64(Float64(z * z) * y)) t_2 = Float64(t * Float64(y * 4.0)) tmp = 0.0 if (Float64(x * x) <= 1.28e-267) tmp = t_2; elseif (Float64(x * x) <= 1.72e-239) tmp = t_1; elseif (Float64(x * x) <= 1.55e-173) tmp = t_2; elseif (Float64(x * x) <= 1.65e+19) tmp = t_1; else tmp = Float64(x * x); end return tmp end
z = abs(z) function tmp_2 = code(x, y, z, t) t_1 = -4.0 * ((z * z) * y); t_2 = t * (y * 4.0); tmp = 0.0; if ((x * x) <= 1.28e-267) tmp = t_2; elseif ((x * x) <= 1.72e-239) tmp = t_1; elseif ((x * x) <= 1.55e-173) tmp = t_2; elseif ((x * x) <= 1.65e+19) tmp = t_1; else tmp = x * x; end tmp_2 = tmp; end
NOTE: z should be positive before calling this function
code[x_, y_, z_, t_] := Block[{t$95$1 = N[(-4.0 * N[(N[(z * z), $MachinePrecision] * y), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(t * N[(y * 4.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(x * x), $MachinePrecision], 1.28e-267], t$95$2, If[LessEqual[N[(x * x), $MachinePrecision], 1.72e-239], t$95$1, If[LessEqual[N[(x * x), $MachinePrecision], 1.55e-173], t$95$2, If[LessEqual[N[(x * x), $MachinePrecision], 1.65e+19], t$95$1, N[(x * x), $MachinePrecision]]]]]]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
t_1 := -4 \cdot \left(\left(z \cdot z\right) \cdot y\right)\\
t_2 := t \cdot \left(y \cdot 4\right)\\
\mathbf{if}\;x \cdot x \leq 1.28 \cdot 10^{-267}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;x \cdot x \leq 1.72 \cdot 10^{-239}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;x \cdot x \leq 1.55 \cdot 10^{-173}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;x \cdot x \leq 1.65 \cdot 10^{+19}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;x \cdot x\\
\end{array}
\end{array}
if (*.f64 x x) < 1.2799999999999999e-267 or 1.72000000000000005e-239 < (*.f64 x x) < 1.55000000000000003e-173Initial program 95.9%
Taylor expanded in t around inf 61.8%
associate-*r*61.8%
Simplified61.8%
if 1.2799999999999999e-267 < (*.f64 x x) < 1.72000000000000005e-239 or 1.55000000000000003e-173 < (*.f64 x x) < 1.65e19Initial program 93.9%
Taylor expanded in z around inf 51.6%
unpow251.6%
Simplified51.6%
if 1.65e19 < (*.f64 x x) Initial program 85.1%
Taylor expanded in x around inf 78.6%
unpow278.6%
Simplified78.6%
Final simplification67.8%
NOTE: z should be positive before calling this function
(FPCore (x y z t)
:precision binary64
(let* ((t_1 (* t (* y 4.0))) (t_2 (* z (* z (* y -4.0)))))
(if (<= x 5e-201)
t_2
(if (<= x 2.8e-135)
t_1
(if (<= x 2.75e-120)
(* -4.0 (* (* z z) y))
(if (<= x 2.8e-87) t_1 (if (<= x 1000000000000.0) t_2 (* x x))))))))z = abs(z);
double code(double x, double y, double z, double t) {
double t_1 = t * (y * 4.0);
double t_2 = z * (z * (y * -4.0));
double tmp;
if (x <= 5e-201) {
tmp = t_2;
} else if (x <= 2.8e-135) {
tmp = t_1;
} else if (x <= 2.75e-120) {
tmp = -4.0 * ((z * z) * y);
} else if (x <= 2.8e-87) {
tmp = t_1;
} else if (x <= 1000000000000.0) {
tmp = t_2;
} else {
tmp = x * x;
}
return tmp;
}
NOTE: z should be positive before calling this function
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) :: t_1
real(8) :: t_2
real(8) :: tmp
t_1 = t * (y * 4.0d0)
t_2 = z * (z * (y * (-4.0d0)))
if (x <= 5d-201) then
tmp = t_2
else if (x <= 2.8d-135) then
tmp = t_1
else if (x <= 2.75d-120) then
tmp = (-4.0d0) * ((z * z) * y)
else if (x <= 2.8d-87) then
tmp = t_1
else if (x <= 1000000000000.0d0) then
tmp = t_2
else
tmp = x * x
end if
code = tmp
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
double t_1 = t * (y * 4.0);
double t_2 = z * (z * (y * -4.0));
double tmp;
if (x <= 5e-201) {
tmp = t_2;
} else if (x <= 2.8e-135) {
tmp = t_1;
} else if (x <= 2.75e-120) {
tmp = -4.0 * ((z * z) * y);
} else if (x <= 2.8e-87) {
tmp = t_1;
} else if (x <= 1000000000000.0) {
tmp = t_2;
} else {
tmp = x * x;
}
return tmp;
}
z = abs(z) def code(x, y, z, t): t_1 = t * (y * 4.0) t_2 = z * (z * (y * -4.0)) tmp = 0 if x <= 5e-201: tmp = t_2 elif x <= 2.8e-135: tmp = t_1 elif x <= 2.75e-120: tmp = -4.0 * ((z * z) * y) elif x <= 2.8e-87: tmp = t_1 elif x <= 1000000000000.0: tmp = t_2 else: tmp = x * x return tmp
z = abs(z) function code(x, y, z, t) t_1 = Float64(t * Float64(y * 4.0)) t_2 = Float64(z * Float64(z * Float64(y * -4.0))) tmp = 0.0 if (x <= 5e-201) tmp = t_2; elseif (x <= 2.8e-135) tmp = t_1; elseif (x <= 2.75e-120) tmp = Float64(-4.0 * Float64(Float64(z * z) * y)); elseif (x <= 2.8e-87) tmp = t_1; elseif (x <= 1000000000000.0) tmp = t_2; else tmp = Float64(x * x); end return tmp end
z = abs(z) function tmp_2 = code(x, y, z, t) t_1 = t * (y * 4.0); t_2 = z * (z * (y * -4.0)); tmp = 0.0; if (x <= 5e-201) tmp = t_2; elseif (x <= 2.8e-135) tmp = t_1; elseif (x <= 2.75e-120) tmp = -4.0 * ((z * z) * y); elseif (x <= 2.8e-87) tmp = t_1; elseif (x <= 1000000000000.0) tmp = t_2; else tmp = x * x; end tmp_2 = tmp; end
NOTE: z should be positive before calling this function
code[x_, y_, z_, t_] := Block[{t$95$1 = N[(t * N[(y * 4.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(z * N[(z * N[(y * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, 5e-201], t$95$2, If[LessEqual[x, 2.8e-135], t$95$1, If[LessEqual[x, 2.75e-120], N[(-4.0 * N[(N[(z * z), $MachinePrecision] * y), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 2.8e-87], t$95$1, If[LessEqual[x, 1000000000000.0], t$95$2, N[(x * x), $MachinePrecision]]]]]]]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
t_1 := t \cdot \left(y \cdot 4\right)\\
t_2 := z \cdot \left(z \cdot \left(y \cdot -4\right)\right)\\
\mathbf{if}\;x \leq 5 \cdot 10^{-201}:\\
\;\;\;\;t_2\\
\mathbf{elif}\;x \leq 2.8 \cdot 10^{-135}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;x \leq 2.75 \cdot 10^{-120}:\\
\;\;\;\;-4 \cdot \left(\left(z \cdot z\right) \cdot y\right)\\
\mathbf{elif}\;x \leq 2.8 \cdot 10^{-87}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;x \leq 1000000000000:\\
\;\;\;\;t_2\\
\mathbf{else}:\\
\;\;\;\;x \cdot x\\
\end{array}
\end{array}
if x < 4.9999999999999999e-201 or 2.8000000000000001e-87 < x < 1e12Initial program 91.8%
Taylor expanded in z around inf 39.7%
metadata-eval39.7%
distribute-lft-neg-in39.7%
*-commutative39.7%
unpow239.7%
*-commutative39.7%
associate-*r*39.7%
associate-*l*42.7%
distribute-rgt-neg-in42.7%
distribute-rgt-neg-in42.7%
distribute-rgt-neg-in42.7%
metadata-eval42.7%
Simplified42.7%
if 4.9999999999999999e-201 < x < 2.80000000000000023e-135 or 2.7500000000000001e-120 < x < 2.8000000000000001e-87Initial program 99.9%
Taylor expanded in t around inf 81.5%
associate-*r*81.5%
Simplified81.5%
if 2.80000000000000023e-135 < x < 2.7500000000000001e-120Initial program 99.7%
Taylor expanded in z around inf 99.7%
unpow299.7%
Simplified99.7%
if 1e12 < x Initial program 81.3%
Taylor expanded in x around inf 79.1%
unpow279.1%
Simplified79.1%
Final simplification54.8%
NOTE: z should be positive before calling this function
(FPCore (x y z t)
:precision binary64
(let* ((t_1 (* t (* y 4.0))))
(if (<= x 1.3e-200)
(* z (* z (* y -4.0)))
(if (<= x 1.88e-134)
t_1
(if (<= x 2.7e-120)
(* -4.0 (* (* z z) y))
(if (<= x 2.6e-87)
t_1
(if (<= x 980000000000.0) (* z (* -4.0 (* z y))) (* x x))))))))z = abs(z);
double code(double x, double y, double z, double t) {
double t_1 = t * (y * 4.0);
double tmp;
if (x <= 1.3e-200) {
tmp = z * (z * (y * -4.0));
} else if (x <= 1.88e-134) {
tmp = t_1;
} else if (x <= 2.7e-120) {
tmp = -4.0 * ((z * z) * y);
} else if (x <= 2.6e-87) {
tmp = t_1;
} else if (x <= 980000000000.0) {
tmp = z * (-4.0 * (z * y));
} else {
tmp = x * x;
}
return tmp;
}
NOTE: z should be positive before calling this function
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) :: t_1
real(8) :: tmp
t_1 = t * (y * 4.0d0)
if (x <= 1.3d-200) then
tmp = z * (z * (y * (-4.0d0)))
else if (x <= 1.88d-134) then
tmp = t_1
else if (x <= 2.7d-120) then
tmp = (-4.0d0) * ((z * z) * y)
else if (x <= 2.6d-87) then
tmp = t_1
else if (x <= 980000000000.0d0) then
tmp = z * ((-4.0d0) * (z * y))
else
tmp = x * x
end if
code = tmp
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
double t_1 = t * (y * 4.0);
double tmp;
if (x <= 1.3e-200) {
tmp = z * (z * (y * -4.0));
} else if (x <= 1.88e-134) {
tmp = t_1;
} else if (x <= 2.7e-120) {
tmp = -4.0 * ((z * z) * y);
} else if (x <= 2.6e-87) {
tmp = t_1;
} else if (x <= 980000000000.0) {
tmp = z * (-4.0 * (z * y));
} else {
tmp = x * x;
}
return tmp;
}
z = abs(z) def code(x, y, z, t): t_1 = t * (y * 4.0) tmp = 0 if x <= 1.3e-200: tmp = z * (z * (y * -4.0)) elif x <= 1.88e-134: tmp = t_1 elif x <= 2.7e-120: tmp = -4.0 * ((z * z) * y) elif x <= 2.6e-87: tmp = t_1 elif x <= 980000000000.0: tmp = z * (-4.0 * (z * y)) else: tmp = x * x return tmp
z = abs(z) function code(x, y, z, t) t_1 = Float64(t * Float64(y * 4.0)) tmp = 0.0 if (x <= 1.3e-200) tmp = Float64(z * Float64(z * Float64(y * -4.0))); elseif (x <= 1.88e-134) tmp = t_1; elseif (x <= 2.7e-120) tmp = Float64(-4.0 * Float64(Float64(z * z) * y)); elseif (x <= 2.6e-87) tmp = t_1; elseif (x <= 980000000000.0) tmp = Float64(z * Float64(-4.0 * Float64(z * y))); else tmp = Float64(x * x); end return tmp end
z = abs(z) function tmp_2 = code(x, y, z, t) t_1 = t * (y * 4.0); tmp = 0.0; if (x <= 1.3e-200) tmp = z * (z * (y * -4.0)); elseif (x <= 1.88e-134) tmp = t_1; elseif (x <= 2.7e-120) tmp = -4.0 * ((z * z) * y); elseif (x <= 2.6e-87) tmp = t_1; elseif (x <= 980000000000.0) tmp = z * (-4.0 * (z * y)); else tmp = x * x; end tmp_2 = tmp; end
NOTE: z should be positive before calling this function
code[x_, y_, z_, t_] := Block[{t$95$1 = N[(t * N[(y * 4.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x, 1.3e-200], N[(z * N[(z * N[(y * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 1.88e-134], t$95$1, If[LessEqual[x, 2.7e-120], N[(-4.0 * N[(N[(z * z), $MachinePrecision] * y), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 2.6e-87], t$95$1, If[LessEqual[x, 980000000000.0], N[(z * N[(-4.0 * N[(z * y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x * x), $MachinePrecision]]]]]]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
t_1 := t \cdot \left(y \cdot 4\right)\\
\mathbf{if}\;x \leq 1.3 \cdot 10^{-200}:\\
\;\;\;\;z \cdot \left(z \cdot \left(y \cdot -4\right)\right)\\
\mathbf{elif}\;x \leq 1.88 \cdot 10^{-134}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;x \leq 2.7 \cdot 10^{-120}:\\
\;\;\;\;-4 \cdot \left(\left(z \cdot z\right) \cdot y\right)\\
\mathbf{elif}\;x \leq 2.6 \cdot 10^{-87}:\\
\;\;\;\;t_1\\
\mathbf{elif}\;x \leq 980000000000:\\
\;\;\;\;z \cdot \left(-4 \cdot \left(z \cdot y\right)\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x\\
\end{array}
\end{array}
if x < 1.29999999999999995e-200Initial program 92.0%
Taylor expanded in z around inf 39.7%
metadata-eval39.7%
distribute-lft-neg-in39.7%
*-commutative39.7%
unpow239.7%
*-commutative39.7%
associate-*r*39.7%
associate-*l*42.0%
distribute-rgt-neg-in42.0%
distribute-rgt-neg-in42.0%
distribute-rgt-neg-in42.0%
metadata-eval42.0%
Simplified42.0%
if 1.29999999999999995e-200 < x < 1.8799999999999999e-134 or 2.6999999999999999e-120 < x < 2.60000000000000002e-87Initial program 99.9%
Taylor expanded in t around inf 81.5%
associate-*r*81.5%
Simplified81.5%
if 1.8799999999999999e-134 < x < 2.6999999999999999e-120Initial program 99.7%
Taylor expanded in z around inf 99.7%
unpow299.7%
Simplified99.7%
if 2.60000000000000002e-87 < x < 9.8e11Initial program 90.3%
Taylor expanded in z around inf 39.3%
unpow239.3%
Simplified39.3%
add-sqr-sqrt22.9%
sqrt-unprod23.2%
*-commutative23.2%
*-commutative23.2%
swap-sqr17.7%
pow217.7%
pow217.7%
pow-prod-up17.7%
metadata-eval17.7%
Applied egg-rr17.7%
Taylor expanded in z around 0 39.3%
*-commutative39.3%
*-commutative39.3%
unpow239.3%
associate-*l*48.8%
associate-*l*48.8%
Simplified48.8%
if 9.8e11 < x Initial program 81.3%
Taylor expanded in x around inf 79.1%
unpow279.1%
Simplified79.1%
Final simplification54.8%
NOTE: z should be positive before calling this function (FPCore (x y z t) :precision binary64 (if (<= (* x x) 7.2e-32) (* (- (* z z) t) (* y -4.0)) (if (<= (* x x) 3.8e+239) (- (* x x) (* t (* y -4.0))) (* x x))))
z = abs(z);
double code(double x, double y, double z, double t) {
double tmp;
if ((x * x) <= 7.2e-32) {
tmp = ((z * z) - t) * (y * -4.0);
} else if ((x * x) <= 3.8e+239) {
tmp = (x * x) - (t * (y * -4.0));
} else {
tmp = x * x;
}
return tmp;
}
NOTE: z should be positive before calling this function
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 * x) <= 7.2d-32) then
tmp = ((z * z) - t) * (y * (-4.0d0))
else if ((x * x) <= 3.8d+239) then
tmp = (x * x) - (t * (y * (-4.0d0)))
else
tmp = x * x
end if
code = tmp
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x * x) <= 7.2e-32) {
tmp = ((z * z) - t) * (y * -4.0);
} else if ((x * x) <= 3.8e+239) {
tmp = (x * x) - (t * (y * -4.0));
} else {
tmp = x * x;
}
return tmp;
}
z = abs(z) def code(x, y, z, t): tmp = 0 if (x * x) <= 7.2e-32: tmp = ((z * z) - t) * (y * -4.0) elif (x * x) <= 3.8e+239: tmp = (x * x) - (t * (y * -4.0)) else: tmp = x * x return tmp
z = abs(z) function code(x, y, z, t) tmp = 0.0 if (Float64(x * x) <= 7.2e-32) tmp = Float64(Float64(Float64(z * z) - t) * Float64(y * -4.0)); elseif (Float64(x * x) <= 3.8e+239) tmp = Float64(Float64(x * x) - Float64(t * Float64(y * -4.0))); else tmp = Float64(x * x); end return tmp end
z = abs(z) function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x * x) <= 7.2e-32) tmp = ((z * z) - t) * (y * -4.0); elseif ((x * x) <= 3.8e+239) tmp = (x * x) - (t * (y * -4.0)); else tmp = x * x; end tmp_2 = tmp; end
NOTE: z should be positive before calling this function code[x_, y_, z_, t_] := If[LessEqual[N[(x * x), $MachinePrecision], 7.2e-32], N[(N[(N[(z * z), $MachinePrecision] - t), $MachinePrecision] * N[(y * -4.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(x * x), $MachinePrecision], 3.8e+239], N[(N[(x * x), $MachinePrecision] - N[(t * N[(y * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x * x), $MachinePrecision]]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
\mathbf{if}\;x \cdot x \leq 7.2 \cdot 10^{-32}:\\
\;\;\;\;\left(z \cdot z - t\right) \cdot \left(y \cdot -4\right)\\
\mathbf{elif}\;x \cdot x \leq 3.8 \cdot 10^{+239}:\\
\;\;\;\;x \cdot x - t \cdot \left(y \cdot -4\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x\\
\end{array}
\end{array}
if (*.f64 x x) < 7.19999999999999986e-32Initial program 94.7%
Taylor expanded in x around 0 90.0%
*-commutative90.0%
*-commutative90.0%
unpow290.0%
*-commutative90.0%
associate-*l*90.0%
Simplified90.0%
if 7.19999999999999986e-32 < (*.f64 x x) < 3.8000000000000001e239Initial program 93.0%
Taylor expanded in z around 0 74.8%
*-commutative74.8%
*-commutative74.8%
associate-*l*74.8%
Simplified74.8%
if 3.8000000000000001e239 < (*.f64 x x) Initial program 82.1%
Taylor expanded in x around inf 88.6%
unpow288.6%
Simplified88.6%
Final simplification86.3%
NOTE: z should be positive before calling this function
(FPCore (x y z t)
:precision binary64
(if (<= z 3.8e+21)
(- (* x x) (* t (* y -4.0)))
(if (<= z 2.45e+157)
(+ (* x x) (* y (* (* z z) -4.0)))
(* z (* z (* y -4.0))))))z = abs(z);
double code(double x, double y, double z, double t) {
double tmp;
if (z <= 3.8e+21) {
tmp = (x * x) - (t * (y * -4.0));
} else if (z <= 2.45e+157) {
tmp = (x * x) + (y * ((z * z) * -4.0));
} else {
tmp = z * (z * (y * -4.0));
}
return tmp;
}
NOTE: z should be positive before calling this function
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 (z <= 3.8d+21) then
tmp = (x * x) - (t * (y * (-4.0d0)))
else if (z <= 2.45d+157) then
tmp = (x * x) + (y * ((z * z) * (-4.0d0)))
else
tmp = z * (z * (y * (-4.0d0)))
end if
code = tmp
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
double tmp;
if (z <= 3.8e+21) {
tmp = (x * x) - (t * (y * -4.0));
} else if (z <= 2.45e+157) {
tmp = (x * x) + (y * ((z * z) * -4.0));
} else {
tmp = z * (z * (y * -4.0));
}
return tmp;
}
z = abs(z) def code(x, y, z, t): tmp = 0 if z <= 3.8e+21: tmp = (x * x) - (t * (y * -4.0)) elif z <= 2.45e+157: tmp = (x * x) + (y * ((z * z) * -4.0)) else: tmp = z * (z * (y * -4.0)) return tmp
z = abs(z) function code(x, y, z, t) tmp = 0.0 if (z <= 3.8e+21) tmp = Float64(Float64(x * x) - Float64(t * Float64(y * -4.0))); elseif (z <= 2.45e+157) tmp = Float64(Float64(x * x) + Float64(y * Float64(Float64(z * z) * -4.0))); else tmp = Float64(z * Float64(z * Float64(y * -4.0))); end return tmp end
z = abs(z) function tmp_2 = code(x, y, z, t) tmp = 0.0; if (z <= 3.8e+21) tmp = (x * x) - (t * (y * -4.0)); elseif (z <= 2.45e+157) tmp = (x * x) + (y * ((z * z) * -4.0)); else tmp = z * (z * (y * -4.0)); end tmp_2 = tmp; end
NOTE: z should be positive before calling this function code[x_, y_, z_, t_] := If[LessEqual[z, 3.8e+21], N[(N[(x * x), $MachinePrecision] - N[(t * N[(y * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 2.45e+157], N[(N[(x * x), $MachinePrecision] + N[(y * N[(N[(z * z), $MachinePrecision] * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(z * N[(z * N[(y * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
\mathbf{if}\;z \leq 3.8 \cdot 10^{+21}:\\
\;\;\;\;x \cdot x - t \cdot \left(y \cdot -4\right)\\
\mathbf{elif}\;z \leq 2.45 \cdot 10^{+157}:\\
\;\;\;\;x \cdot x + y \cdot \left(\left(z \cdot z\right) \cdot -4\right)\\
\mathbf{else}:\\
\;\;\;\;z \cdot \left(z \cdot \left(y \cdot -4\right)\right)\\
\end{array}
\end{array}
if z < 3.8e21Initial program 91.1%
Taylor expanded in z around 0 73.9%
*-commutative73.9%
*-commutative73.9%
associate-*l*73.9%
Simplified73.9%
if 3.8e21 < z < 2.4500000000000001e157Initial program 100.0%
Taylor expanded in z around inf 100.0%
unpow2100.0%
associate-*r*100.0%
*-commutative100.0%
associate-*r*100.0%
*-commutative100.0%
Simplified100.0%
sub-neg100.0%
+-commutative100.0%
distribute-lft-neg-in100.0%
associate-*l*100.0%
distribute-lft-neg-in100.0%
metadata-eval100.0%
associate-*r*100.0%
associate-*r*100.0%
*-commutative100.0%
associate-*l*100.0%
Applied egg-rr100.0%
if 2.4500000000000001e157 < z Initial program 77.4%
Taylor expanded in z around inf 81.4%
metadata-eval81.4%
distribute-lft-neg-in81.4%
*-commutative81.4%
unpow281.4%
*-commutative81.4%
associate-*r*81.4%
associate-*l*92.4%
distribute-rgt-neg-in92.4%
distribute-rgt-neg-in92.4%
distribute-rgt-neg-in92.4%
metadata-eval92.4%
Simplified92.4%
Final simplification77.9%
NOTE: z should be positive before calling this function (FPCore (x y z t) :precision binary64 (if (<= (* z z) 5e+28) (- (* x x) (* t (* y -4.0))) (- (* x x) (* z (* z (* y 4.0))))))
z = abs(z);
double code(double x, double y, double z, double t) {
double tmp;
if ((z * z) <= 5e+28) {
tmp = (x * x) - (t * (y * -4.0));
} else {
tmp = (x * x) - (z * (z * (y * 4.0)));
}
return tmp;
}
NOTE: z should be positive before calling this function
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 ((z * z) <= 5d+28) then
tmp = (x * x) - (t * (y * (-4.0d0)))
else
tmp = (x * x) - (z * (z * (y * 4.0d0)))
end if
code = tmp
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
double tmp;
if ((z * z) <= 5e+28) {
tmp = (x * x) - (t * (y * -4.0));
} else {
tmp = (x * x) - (z * (z * (y * 4.0)));
}
return tmp;
}
z = abs(z) def code(x, y, z, t): tmp = 0 if (z * z) <= 5e+28: tmp = (x * x) - (t * (y * -4.0)) else: tmp = (x * x) - (z * (z * (y * 4.0))) return tmp
z = abs(z) function code(x, y, z, t) tmp = 0.0 if (Float64(z * z) <= 5e+28) tmp = Float64(Float64(x * x) - Float64(t * Float64(y * -4.0))); else tmp = Float64(Float64(x * x) - Float64(z * Float64(z * Float64(y * 4.0)))); end return tmp end
z = abs(z) function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((z * z) <= 5e+28) tmp = (x * x) - (t * (y * -4.0)); else tmp = (x * x) - (z * (z * (y * 4.0))); end tmp_2 = tmp; end
NOTE: z should be positive before calling this function code[x_, y_, z_, t_] := If[LessEqual[N[(z * z), $MachinePrecision], 5e+28], N[(N[(x * x), $MachinePrecision] - N[(t * N[(y * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x * x), $MachinePrecision] - N[(z * N[(z * N[(y * 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
\mathbf{if}\;z \cdot z \leq 5 \cdot 10^{+28}:\\
\;\;\;\;x \cdot x - t \cdot \left(y \cdot -4\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x - z \cdot \left(z \cdot \left(y \cdot 4\right)\right)\\
\end{array}
\end{array}
if (*.f64 z z) < 4.99999999999999957e28Initial program 97.2%
Taylor expanded in z around 0 90.3%
*-commutative90.3%
*-commutative90.3%
associate-*l*90.3%
Simplified90.3%
if 4.99999999999999957e28 < (*.f64 z z) Initial program 81.9%
Taylor expanded in z around inf 78.5%
unpow278.5%
associate-*r*78.5%
*-commutative78.5%
associate-*r*87.6%
*-commutative87.6%
Simplified87.6%
Final simplification89.1%
NOTE: z should be positive before calling this function (FPCore (x y z t) :precision binary64 (if (<= z 9e+119) (+ (* x x) (* (* y 4.0) (- t (* z z)))) (- (* x x) (* z (* z (* y 4.0))))))
z = abs(z);
double code(double x, double y, double z, double t) {
double tmp;
if (z <= 9e+119) {
tmp = (x * x) + ((y * 4.0) * (t - (z * z)));
} else {
tmp = (x * x) - (z * (z * (y * 4.0)));
}
return tmp;
}
NOTE: z should be positive before calling this function
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 (z <= 9d+119) then
tmp = (x * x) + ((y * 4.0d0) * (t - (z * z)))
else
tmp = (x * x) - (z * (z * (y * 4.0d0)))
end if
code = tmp
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
double tmp;
if (z <= 9e+119) {
tmp = (x * x) + ((y * 4.0) * (t - (z * z)));
} else {
tmp = (x * x) - (z * (z * (y * 4.0)));
}
return tmp;
}
z = abs(z) def code(x, y, z, t): tmp = 0 if z <= 9e+119: tmp = (x * x) + ((y * 4.0) * (t - (z * z))) else: tmp = (x * x) - (z * (z * (y * 4.0))) return tmp
z = abs(z) function code(x, y, z, t) tmp = 0.0 if (z <= 9e+119) tmp = Float64(Float64(x * x) + Float64(Float64(y * 4.0) * Float64(t - Float64(z * z)))); else tmp = Float64(Float64(x * x) - Float64(z * Float64(z * Float64(y * 4.0)))); end return tmp end
z = abs(z) function tmp_2 = code(x, y, z, t) tmp = 0.0; if (z <= 9e+119) tmp = (x * x) + ((y * 4.0) * (t - (z * z))); else tmp = (x * x) - (z * (z * (y * 4.0))); end tmp_2 = tmp; end
NOTE: z should be positive before calling this function code[x_, y_, z_, t_] := If[LessEqual[z, 9e+119], N[(N[(x * x), $MachinePrecision] + N[(N[(y * 4.0), $MachinePrecision] * N[(t - N[(z * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x * x), $MachinePrecision] - N[(z * N[(z * N[(y * 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
\mathbf{if}\;z \leq 9 \cdot 10^{+119}:\\
\;\;\;\;x \cdot x + \left(y \cdot 4\right) \cdot \left(t - z \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x - z \cdot \left(z \cdot \left(y \cdot 4\right)\right)\\
\end{array}
\end{array}
if z < 9.00000000000000039e119Initial program 91.6%
if 9.00000000000000039e119 < z Initial program 83.4%
Taylor expanded in z around inf 83.4%
unpow283.4%
associate-*r*83.4%
*-commutative83.4%
associate-*r*97.0%
*-commutative97.0%
Simplified97.0%
Final simplification92.3%
NOTE: z should be positive before calling this function (FPCore (x y z t) :precision binary64 (if (<= (* x x) 1.4e+149) (* (- (* z z) t) (* y -4.0)) (* x x)))
z = abs(z);
double code(double x, double y, double z, double t) {
double tmp;
if ((x * x) <= 1.4e+149) {
tmp = ((z * z) - t) * (y * -4.0);
} else {
tmp = x * x;
}
return tmp;
}
NOTE: z should be positive before calling this function
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 * x) <= 1.4d+149) then
tmp = ((z * z) - t) * (y * (-4.0d0))
else
tmp = x * x
end if
code = tmp
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x * x) <= 1.4e+149) {
tmp = ((z * z) - t) * (y * -4.0);
} else {
tmp = x * x;
}
return tmp;
}
z = abs(z) def code(x, y, z, t): tmp = 0 if (x * x) <= 1.4e+149: tmp = ((z * z) - t) * (y * -4.0) else: tmp = x * x return tmp
z = abs(z) function code(x, y, z, t) tmp = 0.0 if (Float64(x * x) <= 1.4e+149) tmp = Float64(Float64(Float64(z * z) - t) * Float64(y * -4.0)); else tmp = Float64(x * x); end return tmp end
z = abs(z) function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x * x) <= 1.4e+149) tmp = ((z * z) - t) * (y * -4.0); else tmp = x * x; end tmp_2 = tmp; end
NOTE: z should be positive before calling this function code[x_, y_, z_, t_] := If[LessEqual[N[(x * x), $MachinePrecision], 1.4e+149], N[(N[(N[(z * z), $MachinePrecision] - t), $MachinePrecision] * N[(y * -4.0), $MachinePrecision]), $MachinePrecision], N[(x * x), $MachinePrecision]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
\mathbf{if}\;x \cdot x \leq 1.4 \cdot 10^{+149}:\\
\;\;\;\;\left(z \cdot z - t\right) \cdot \left(y \cdot -4\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x\\
\end{array}
\end{array}
if (*.f64 x x) < 1.4e149Initial program 94.5%
Taylor expanded in x around 0 82.8%
*-commutative82.8%
*-commutative82.8%
unpow282.8%
*-commutative82.8%
associate-*l*82.8%
Simplified82.8%
if 1.4e149 < (*.f64 x x) Initial program 84.3%
Taylor expanded in x around inf 84.6%
unpow284.6%
Simplified84.6%
Final simplification83.5%
NOTE: z should be positive before calling this function (FPCore (x y z t) :precision binary64 (if (<= (* x x) 7.2e-23) (* t (* y 4.0)) (* x x)))
z = abs(z);
double code(double x, double y, double z, double t) {
double tmp;
if ((x * x) <= 7.2e-23) {
tmp = t * (y * 4.0);
} else {
tmp = x * x;
}
return tmp;
}
NOTE: z should be positive before calling this function
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 * x) <= 7.2d-23) then
tmp = t * (y * 4.0d0)
else
tmp = x * x
end if
code = tmp
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
double tmp;
if ((x * x) <= 7.2e-23) {
tmp = t * (y * 4.0);
} else {
tmp = x * x;
}
return tmp;
}
z = abs(z) def code(x, y, z, t): tmp = 0 if (x * x) <= 7.2e-23: tmp = t * (y * 4.0) else: tmp = x * x return tmp
z = abs(z) function code(x, y, z, t) tmp = 0.0 if (Float64(x * x) <= 7.2e-23) tmp = Float64(t * Float64(y * 4.0)); else tmp = Float64(x * x); end return tmp end
z = abs(z) function tmp_2 = code(x, y, z, t) tmp = 0.0; if ((x * x) <= 7.2e-23) tmp = t * (y * 4.0); else tmp = x * x; end tmp_2 = tmp; end
NOTE: z should be positive before calling this function code[x_, y_, z_, t_] := If[LessEqual[N[(x * x), $MachinePrecision], 7.2e-23], N[(t * N[(y * 4.0), $MachinePrecision]), $MachinePrecision], N[(x * x), $MachinePrecision]]
\begin{array}{l}
z = |z|\\
\\
\begin{array}{l}
\mathbf{if}\;x \cdot x \leq 7.2 \cdot 10^{-23}:\\
\;\;\;\;t \cdot \left(y \cdot 4\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x\\
\end{array}
\end{array}
if (*.f64 x x) < 7.1999999999999996e-23Initial program 94.9%
Taylor expanded in t around inf 51.6%
associate-*r*51.6%
Simplified51.6%
if 7.1999999999999996e-23 < (*.f64 x x) Initial program 86.2%
Taylor expanded in x around inf 75.0%
unpow275.0%
Simplified75.0%
Final simplification63.4%
NOTE: z should be positive before calling this function (FPCore (x y z t) :precision binary64 (* x x))
z = abs(z);
double code(double x, double y, double z, double t) {
return x * x;
}
NOTE: z should be positive before calling this function
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 * x
end function
z = Math.abs(z);
public static double code(double x, double y, double z, double t) {
return x * x;
}
z = abs(z) def code(x, y, z, t): return x * x
z = abs(z) function code(x, y, z, t) return Float64(x * x) end
z = abs(z) function tmp = code(x, y, z, t) tmp = x * x; end
NOTE: z should be positive before calling this function code[x_, y_, z_, t_] := N[(x * x), $MachinePrecision]
\begin{array}{l}
z = |z|\\
\\
x \cdot x
\end{array}
Initial program 90.5%
Taylor expanded in x around inf 43.3%
unpow243.3%
Simplified43.3%
Final simplification43.3%
(FPCore (x y z t) :precision binary64 (- (* x x) (* 4.0 (* y (- (* z z) t)))))
double code(double x, double y, double z, double t) {
return (x * x) - (4.0 * (y * ((z * z) - t)));
}
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 * x) - (4.0d0 * (y * ((z * z) - t)))
end function
public static double code(double x, double y, double z, double t) {
return (x * x) - (4.0 * (y * ((z * z) - t)));
}
def code(x, y, z, t): return (x * x) - (4.0 * (y * ((z * z) - t)))
function code(x, y, z, t) return Float64(Float64(x * x) - Float64(4.0 * Float64(y * Float64(Float64(z * z) - t)))) end
function tmp = code(x, y, z, t) tmp = (x * x) - (4.0 * (y * ((z * z) - t))); end
code[x_, y_, z_, t_] := N[(N[(x * x), $MachinePrecision] - N[(4.0 * N[(y * N[(N[(z * z), $MachinePrecision] - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x \cdot x - 4 \cdot \left(y \cdot \left(z \cdot z - t\right)\right)
\end{array}
herbie shell --seed 2023274
(FPCore (x y z t)
:name "Graphics.Rasterific.Shading:$sradialGradientWithFocusShader from Rasterific-0.6.1, B"
:precision binary64
:herbie-target
(- (* x x) (* 4.0 (* y (- (* z z) t))))
(- (* x x) (* (* y 4.0) (- (* z z) t))))