x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \le -1.339683571742010173916707057681142627271 \cdot 10^{154} \lor \neg \left(z \le 1.343821229368198900070514089418053427071 \cdot 10^{154}\right):\\
\;\;\;\;x \cdot x - \left(\left(y \cdot 4\right) \cdot \left(z + \sqrt{t}\right)\right) \cdot \left(z - \sqrt{t}\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x - \left(y \cdot 4\right) \cdot \mathsf{fma}\left(z, z, -t\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r475828 = x;
double r475829 = r475828 * r475828;
double r475830 = y;
double r475831 = 4.0;
double r475832 = r475830 * r475831;
double r475833 = z;
double r475834 = r475833 * r475833;
double r475835 = t;
double r475836 = r475834 - r475835;
double r475837 = r475832 * r475836;
double r475838 = r475829 - r475837;
return r475838;
}
double f(double x, double y, double z, double t) {
double r475839 = z;
double r475840 = -1.3396835717420102e+154;
bool r475841 = r475839 <= r475840;
double r475842 = 1.343821229368199e+154;
bool r475843 = r475839 <= r475842;
double r475844 = !r475843;
bool r475845 = r475841 || r475844;
double r475846 = x;
double r475847 = r475846 * r475846;
double r475848 = y;
double r475849 = 4.0;
double r475850 = r475848 * r475849;
double r475851 = t;
double r475852 = sqrt(r475851);
double r475853 = r475839 + r475852;
double r475854 = r475850 * r475853;
double r475855 = r475839 - r475852;
double r475856 = r475854 * r475855;
double r475857 = r475847 - r475856;
double r475858 = -r475851;
double r475859 = fma(r475839, r475839, r475858);
double r475860 = r475850 * r475859;
double r475861 = r475847 - r475860;
double r475862 = r475845 ? r475857 : r475861;
return r475862;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 6.0 |
|---|---|
| Target | 6.0 |
| Herbie | 3.0 |
if z < -1.3396835717420102e+154 or 1.343821229368199e+154 < z Initial program 64.0
rmApplied add-sqr-sqrt64.0
Applied difference-of-squares64.0
Applied associate-*r*31.8
if -1.3396835717420102e+154 < z < 1.343821229368199e+154Initial program 0.1
rmApplied fma-neg0.1
Final simplification3.0
herbie shell --seed 2019306 +o rules:numerics
(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))))