x \cdot x - \left(y \cdot 4.0\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 6.3258976424500374 \cdot 10^{+289}:\\
\;\;\;\;x \cdot x - \left(4.0 \cdot y\right) \cdot \left(z \cdot z - t\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x - \left(\left(\sqrt{t} + z\right) \cdot \left(4.0 \cdot y\right)\right) \cdot \left(z - \sqrt{t}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r20598650 = x;
double r20598651 = r20598650 * r20598650;
double r20598652 = y;
double r20598653 = 4.0;
double r20598654 = r20598652 * r20598653;
double r20598655 = z;
double r20598656 = r20598655 * r20598655;
double r20598657 = t;
double r20598658 = r20598656 - r20598657;
double r20598659 = r20598654 * r20598658;
double r20598660 = r20598651 - r20598659;
return r20598660;
}
double f(double x, double y, double z, double t) {
double r20598661 = z;
double r20598662 = r20598661 * r20598661;
double r20598663 = 6.3258976424500374e+289;
bool r20598664 = r20598662 <= r20598663;
double r20598665 = x;
double r20598666 = r20598665 * r20598665;
double r20598667 = 4.0;
double r20598668 = y;
double r20598669 = r20598667 * r20598668;
double r20598670 = t;
double r20598671 = r20598662 - r20598670;
double r20598672 = r20598669 * r20598671;
double r20598673 = r20598666 - r20598672;
double r20598674 = sqrt(r20598670);
double r20598675 = r20598674 + r20598661;
double r20598676 = r20598675 * r20598669;
double r20598677 = r20598661 - r20598674;
double r20598678 = r20598676 * r20598677;
double r20598679 = r20598666 - r20598678;
double r20598680 = r20598664 ? r20598673 : r20598679;
return r20598680;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 5.4 |
|---|---|
| Target | 5.4 |
| Herbie | 2.9 |
if (* z z) < 6.3258976424500374e+289Initial program 0.1
if 6.3258976424500374e+289 < (* z z) Initial program 53.0
rmApplied add-sqr-sqrt57.0
Applied difference-of-squares57.0
Applied associate-*r*27.9
Final simplification2.9
herbie shell --seed 2019158
(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))))