x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 2.03849011016511565786308164633915074586 \cdot 10^{302}:\\
\;\;\;\;\mathsf{fma}\left(-\left(z \cdot z - t\right), y \cdot 4, \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\right) + \mathsf{fma}\left(x, x, -\left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x - \left(\left(y \cdot 4\right) \cdot \left(\sqrt{t} + z\right)\right) \cdot \left(z - \sqrt{t}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r25681175 = x;
double r25681176 = r25681175 * r25681175;
double r25681177 = y;
double r25681178 = 4.0;
double r25681179 = r25681177 * r25681178;
double r25681180 = z;
double r25681181 = r25681180 * r25681180;
double r25681182 = t;
double r25681183 = r25681181 - r25681182;
double r25681184 = r25681179 * r25681183;
double r25681185 = r25681176 - r25681184;
return r25681185;
}
double f(double x, double y, double z, double t) {
double r25681186 = z;
double r25681187 = r25681186 * r25681186;
double r25681188 = 2.0384901101651157e+302;
bool r25681189 = r25681187 <= r25681188;
double r25681190 = t;
double r25681191 = r25681187 - r25681190;
double r25681192 = -r25681191;
double r25681193 = y;
double r25681194 = 4.0;
double r25681195 = r25681193 * r25681194;
double r25681196 = r25681195 * r25681191;
double r25681197 = fma(r25681192, r25681195, r25681196);
double r25681198 = x;
double r25681199 = -r25681196;
double r25681200 = fma(r25681198, r25681198, r25681199);
double r25681201 = r25681197 + r25681200;
double r25681202 = r25681198 * r25681198;
double r25681203 = sqrt(r25681190);
double r25681204 = r25681203 + r25681186;
double r25681205 = r25681195 * r25681204;
double r25681206 = r25681186 - r25681203;
double r25681207 = r25681205 * r25681206;
double r25681208 = r25681202 - r25681207;
double r25681209 = r25681189 ? r25681201 : r25681208;
return r25681209;
}




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 z) < 2.0384901101651157e+302Initial program 0.1
rmApplied prod-diff0.1
if 2.0384901101651157e+302 < (* z z) Initial program 61.2
rmApplied add-sqr-sqrt62.8
Applied difference-of-squares62.8
Applied associate-*r*30.3
Final simplification3.0
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t)
:name "Graphics.Rasterific.Shading:$sradialGradientWithFocusShader from Rasterific-0.6.1, B"
:herbie-target
(- (* x x) (* 4.0 (* y (- (* z z) t))))
(- (* x x) (* (* y 4.0) (- (* z z) t))))