x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 6.12322392683654523 \cdot 10^{304}:\\
\;\;\;\;x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x - \left(\left(y \cdot 4\right) \cdot \left(z + \sqrt{t}\right)\right) \cdot \left(z - \sqrt{t}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r691155 = x;
double r691156 = r691155 * r691155;
double r691157 = y;
double r691158 = 4.0;
double r691159 = r691157 * r691158;
double r691160 = z;
double r691161 = r691160 * r691160;
double r691162 = t;
double r691163 = r691161 - r691162;
double r691164 = r691159 * r691163;
double r691165 = r691156 - r691164;
return r691165;
}
double f(double x, double y, double z, double t) {
double r691166 = z;
double r691167 = r691166 * r691166;
double r691168 = 6.123223926836545e+304;
bool r691169 = r691167 <= r691168;
double r691170 = x;
double r691171 = r691170 * r691170;
double r691172 = y;
double r691173 = 4.0;
double r691174 = r691172 * r691173;
double r691175 = t;
double r691176 = r691167 - r691175;
double r691177 = r691174 * r691176;
double r691178 = r691171 - r691177;
double r691179 = sqrt(r691175);
double r691180 = r691166 + r691179;
double r691181 = r691174 * r691180;
double r691182 = r691166 - r691179;
double r691183 = r691181 * r691182;
double r691184 = r691171 - r691183;
double r691185 = r691169 ? r691178 : r691184;
return r691185;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.1 |
|---|---|
| Target | 6.1 |
| Herbie | 3.3 |
if (* z z) < 6.123223926836545e+304Initial program 0.1
if 6.123223926836545e+304 < (* z z) Initial program 62.7
rmApplied add-sqr-sqrt63.3
Applied difference-of-squares63.3
Applied associate-*r*33.7
Final simplification3.3
herbie shell --seed 2020047
(FPCore (x y z t)
:name "Graphics.Rasterific.Shading:$sradialGradientWithFocusShader from Rasterific-0.6.1, B"
:precision binary64
:herbie-target
(- (* x x) (* 4 (* y (- (* z z) t))))
(- (* x x) (* (* y 4) (- (* z z) t))))