x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 1.34947659414785 \cdot 10^{305}:\\
\;\;\;\;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 r351942 = x;
double r351943 = r351942 * r351942;
double r351944 = y;
double r351945 = 4.0;
double r351946 = r351944 * r351945;
double r351947 = z;
double r351948 = r351947 * r351947;
double r351949 = t;
double r351950 = r351948 - r351949;
double r351951 = r351946 * r351950;
double r351952 = r351943 - r351951;
return r351952;
}
double f(double x, double y, double z, double t) {
double r351953 = z;
double r351954 = r351953 * r351953;
double r351955 = 1.34947659414785e+305;
bool r351956 = r351954 <= r351955;
double r351957 = x;
double r351958 = r351957 * r351957;
double r351959 = y;
double r351960 = 4.0;
double r351961 = r351959 * r351960;
double r351962 = t;
double r351963 = r351954 - r351962;
double r351964 = r351961 * r351963;
double r351965 = r351958 - r351964;
double r351966 = sqrt(r351962);
double r351967 = r351953 + r351966;
double r351968 = r351961 * r351967;
double r351969 = r351953 - r351966;
double r351970 = r351968 * r351969;
double r351971 = r351958 - r351970;
double r351972 = r351956 ? r351965 : r351971;
return r351972;
}




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) < 1.34947659414785e+305Initial program 0.1
if 1.34947659414785e+305 < (* z z) Initial program 62.8
rmApplied add-sqr-sqrt63.3
Applied difference-of-squares63.3
Applied associate-*r*33.5
Final simplification3.3
herbie shell --seed 2020042
(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))))