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 5.86519200437255 \cdot 10^{+302}:\\
\;\;\;\;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 r32626692 = x;
double r32626693 = r32626692 * r32626692;
double r32626694 = y;
double r32626695 = 4.0;
double r32626696 = r32626694 * r32626695;
double r32626697 = z;
double r32626698 = r32626697 * r32626697;
double r32626699 = t;
double r32626700 = r32626698 - r32626699;
double r32626701 = r32626696 * r32626700;
double r32626702 = r32626693 - r32626701;
return r32626702;
}
double f(double x, double y, double z, double t) {
double r32626703 = z;
double r32626704 = r32626703 * r32626703;
double r32626705 = 5.86519200437255e+302;
bool r32626706 = r32626704 <= r32626705;
double r32626707 = x;
double r32626708 = r32626707 * r32626707;
double r32626709 = 4.0;
double r32626710 = y;
double r32626711 = r32626709 * r32626710;
double r32626712 = t;
double r32626713 = r32626704 - r32626712;
double r32626714 = r32626711 * r32626713;
double r32626715 = r32626708 - r32626714;
double r32626716 = sqrt(r32626712);
double r32626717 = r32626716 + r32626703;
double r32626718 = r32626717 * r32626711;
double r32626719 = r32626703 - r32626716;
double r32626720 = r32626718 * r32626719;
double r32626721 = r32626708 - r32626720;
double r32626722 = r32626706 ? r32626715 : r32626721;
return r32626722;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 5.6 |
|---|---|
| Target | 5.6 |
| Herbie | 2.9 |
if (* z z) < 5.86519200437255e+302Initial program 0.1
if 5.86519200437255e+302 < (* z z) Initial program 57.9
rmApplied add-sqr-sqrt59.7
Applied difference-of-squares59.7
Applied associate-*r*29.9
Final simplification2.9
herbie shell --seed 2019165
(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))))