x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \le -1.22535753797273755 \cdot 10^{147} \lor \neg \left(z \le 1.34433144844807641 \cdot 10^{154}\right):\\
\;\;\;\;\mathsf{fma}\left(x, x, \left(\left(y \cdot 4\right) \cdot \left(\sqrt{t} + z\right)\right) \cdot \left(\sqrt{t} - z\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(x, x, \left(y \cdot 4\right) \cdot \left(t - z \cdot z\right) + \left(y \cdot 4\right) \cdot \mathsf{fma}\left(-z, z, z \cdot z\right)\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r674131 = x;
double r674132 = r674131 * r674131;
double r674133 = y;
double r674134 = 4.0;
double r674135 = r674133 * r674134;
double r674136 = z;
double r674137 = r674136 * r674136;
double r674138 = t;
double r674139 = r674137 - r674138;
double r674140 = r674135 * r674139;
double r674141 = r674132 - r674140;
return r674141;
}
double f(double x, double y, double z, double t) {
double r674142 = z;
double r674143 = -1.2253575379727375e+147;
bool r674144 = r674142 <= r674143;
double r674145 = 1.3443314484480764e+154;
bool r674146 = r674142 <= r674145;
double r674147 = !r674146;
bool r674148 = r674144 || r674147;
double r674149 = x;
double r674150 = y;
double r674151 = 4.0;
double r674152 = r674150 * r674151;
double r674153 = t;
double r674154 = sqrt(r674153);
double r674155 = r674154 + r674142;
double r674156 = r674152 * r674155;
double r674157 = r674154 - r674142;
double r674158 = r674156 * r674157;
double r674159 = fma(r674149, r674149, r674158);
double r674160 = r674142 * r674142;
double r674161 = r674153 - r674160;
double r674162 = r674152 * r674161;
double r674163 = -r674142;
double r674164 = fma(r674163, r674142, r674160);
double r674165 = r674152 * r674164;
double r674166 = r674162 + r674165;
double r674167 = fma(r674149, r674149, r674166);
double r674168 = r674148 ? r674159 : r674167;
return r674168;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 6.1 |
|---|---|
| Target | 6.1 |
| Herbie | 3.3 |
if z < -1.2253575379727375e+147 or 1.3443314484480764e+154 < z Initial program 61.0
Simplified61.0
rmApplied add-sqr-sqrt62.1
Applied difference-of-squares62.1
Applied associate-*r*32.9
if -1.2253575379727375e+147 < z < 1.3443314484480764e+154Initial program 0.1
Simplified0.1
rmApplied add-sqr-sqrt31.9
Applied prod-diff31.9
Applied distribute-lft-in31.9
Simplified0.1
Final simplification3.3
herbie shell --seed 2020020 +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))))