x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 5.6499424326614904 \cdot 10^{293}:\\
\;\;\;\;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 r759147 = x;
double r759148 = r759147 * r759147;
double r759149 = y;
double r759150 = 4.0;
double r759151 = r759149 * r759150;
double r759152 = z;
double r759153 = r759152 * r759152;
double r759154 = t;
double r759155 = r759153 - r759154;
double r759156 = r759151 * r759155;
double r759157 = r759148 - r759156;
return r759157;
}
double f(double x, double y, double z, double t) {
double r759158 = z;
double r759159 = r759158 * r759158;
double r759160 = 5.6499424326614904e+293;
bool r759161 = r759159 <= r759160;
double r759162 = x;
double r759163 = r759162 * r759162;
double r759164 = y;
double r759165 = 4.0;
double r759166 = r759164 * r759165;
double r759167 = t;
double r759168 = r759159 - r759167;
double r759169 = r759166 * r759168;
double r759170 = r759163 - r759169;
double r759171 = sqrt(r759167);
double r759172 = r759158 + r759171;
double r759173 = r759166 * r759172;
double r759174 = r759158 - r759171;
double r759175 = r759173 * r759174;
double r759176 = r759163 - r759175;
double r759177 = r759161 ? r759170 : r759176;
return r759177;
}




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) < 5.6499424326614904e+293Initial program 0.1
if 5.6499424326614904e+293 < (* z z) Initial program 59.7
rmApplied add-sqr-sqrt62.0
Applied difference-of-squares62.0
Applied associate-*r*31.7
Final simplification3.3
herbie shell --seed 2020025
(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))))