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.1296068017078334 \cdot 10^{302}:\\
\;\;\;\;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 r651195 = x;
double r651196 = r651195 * r651195;
double r651197 = y;
double r651198 = 4.0;
double r651199 = r651197 * r651198;
double r651200 = z;
double r651201 = r651200 * r651200;
double r651202 = t;
double r651203 = r651201 - r651202;
double r651204 = r651199 * r651203;
double r651205 = r651196 - r651204;
return r651205;
}
double f(double x, double y, double z, double t) {
double r651206 = z;
double r651207 = r651206 * r651206;
double r651208 = 2.1296068017078334e+302;
bool r651209 = r651207 <= r651208;
double r651210 = x;
double r651211 = r651210 * r651210;
double r651212 = y;
double r651213 = 4.0;
double r651214 = r651212 * r651213;
double r651215 = t;
double r651216 = r651207 - r651215;
double r651217 = r651214 * r651216;
double r651218 = r651211 - r651217;
double r651219 = sqrt(r651215);
double r651220 = r651206 + r651219;
double r651221 = r651214 * r651220;
double r651222 = r651206 - r651219;
double r651223 = r651221 * r651222;
double r651224 = r651211 - r651223;
double r651225 = r651209 ? r651218 : r651224;
return r651225;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.3 |
|---|---|
| Target | 6.3 |
| Herbie | 3.4 |
if (* z z) < 2.1296068017078334e+302Initial program 0.1
if 2.1296068017078334e+302 < (* z z) Initial program 61.6
rmApplied add-sqr-sqrt62.7
Applied difference-of-squares62.7
Applied associate-*r*32.3
Final simplification3.4
herbie shell --seed 2020039
(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))))