x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \le -1.35702110706452101 \cdot 10^{154}:\\
\;\;\;\;x \cdot x - \left(\left(z + \sqrt{t}\right) \cdot \left(y \cdot 4\right)\right) \cdot \left(z - \sqrt{t}\right)\\
\mathbf{elif}\;z \le 1.35751735716676401 \cdot 10^{154}:\\
\;\;\;\;x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x - \left(\left(z + \sqrt{t}\right) \cdot \left(y \cdot 4\right)\right) \cdot \left(\left(\sqrt{\sqrt{t}} + \sqrt{z}\right) \cdot \left(\sqrt{z} - \sqrt{\sqrt{t}}\right)\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r449033 = x;
double r449034 = r449033 * r449033;
double r449035 = y;
double r449036 = 4.0;
double r449037 = r449035 * r449036;
double r449038 = z;
double r449039 = r449038 * r449038;
double r449040 = t;
double r449041 = r449039 - r449040;
double r449042 = r449037 * r449041;
double r449043 = r449034 - r449042;
return r449043;
}
double f(double x, double y, double z, double t) {
double r449044 = z;
double r449045 = -1.357021107064521e+154;
bool r449046 = r449044 <= r449045;
double r449047 = x;
double r449048 = r449047 * r449047;
double r449049 = t;
double r449050 = sqrt(r449049);
double r449051 = r449044 + r449050;
double r449052 = y;
double r449053 = 4.0;
double r449054 = r449052 * r449053;
double r449055 = r449051 * r449054;
double r449056 = r449044 - r449050;
double r449057 = r449055 * r449056;
double r449058 = r449048 - r449057;
double r449059 = 1.357517357166764e+154;
bool r449060 = r449044 <= r449059;
double r449061 = r449044 * r449044;
double r449062 = r449061 - r449049;
double r449063 = r449054 * r449062;
double r449064 = r449048 - r449063;
double r449065 = sqrt(r449050);
double r449066 = sqrt(r449044);
double r449067 = r449065 + r449066;
double r449068 = r449066 - r449065;
double r449069 = r449067 * r449068;
double r449070 = r449055 * r449069;
double r449071 = r449048 - r449070;
double r449072 = r449060 ? r449064 : r449071;
double r449073 = r449046 ? r449058 : r449072;
return r449073;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.1 |
|---|---|
| Target | 6.0 |
| Herbie | 3.0 |
if z < -1.357021107064521e+154Initial program 64.0
rmApplied add-sqr-sqrt64.0
Applied difference-of-squares64.0
Applied associate-*r*30.8
Simplified30.8
if -1.357021107064521e+154 < z < 1.357517357166764e+154Initial program 0.1
if 1.357517357166764e+154 < z Initial program 64.0
rmApplied add-sqr-sqrt64.0
Applied difference-of-squares64.0
Applied associate-*r*32.6
Simplified32.6
rmApplied add-sqr-sqrt32.6
Applied sqrt-prod32.6
Applied add-sqr-sqrt32.7
Applied difference-of-squares32.7
Simplified32.7
Final simplification3.0
herbie shell --seed 2019199
(FPCore (x y z t)
:name "Graphics.Rasterific.Shading:$sradialGradientWithFocusShader from Rasterific-0.6.1, B"
:herbie-target
(- (* x x) (* 4.0 (* y (- (* z z) t))))
(- (* x x) (* (* y 4.0) (- (* z z) t))))