x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
\begin{array}{l}
\mathbf{if}\;z \cdot z \le 1.7139089614460649 \cdot 10^{308}:\\
\;\;\;\;x \cdot x + \left(y \cdot 4\right) \cdot \left(t - {z}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;x \cdot x + \left(\left(z + \sqrt{t}\right) \cdot \left(y \cdot 4\right)\right) \cdot \left(\sqrt{t} - {z}^{1}\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r669179 = x;
double r669180 = r669179 * r669179;
double r669181 = y;
double r669182 = 4.0;
double r669183 = r669181 * r669182;
double r669184 = z;
double r669185 = r669184 * r669184;
double r669186 = t;
double r669187 = r669185 - r669186;
double r669188 = r669183 * r669187;
double r669189 = r669180 - r669188;
return r669189;
}
double f(double x, double y, double z, double t) {
double r669190 = z;
double r669191 = r669190 * r669190;
double r669192 = 1.7139089614460649e+308;
bool r669193 = r669191 <= r669192;
double r669194 = x;
double r669195 = r669194 * r669194;
double r669196 = y;
double r669197 = 4.0;
double r669198 = r669196 * r669197;
double r669199 = t;
double r669200 = 2.0;
double r669201 = pow(r669190, r669200);
double r669202 = r669199 - r669201;
double r669203 = r669198 * r669202;
double r669204 = r669195 + r669203;
double r669205 = sqrt(r669199);
double r669206 = r669190 + r669205;
double r669207 = r669206 * r669198;
double r669208 = 1.0;
double r669209 = pow(r669190, r669208);
double r669210 = r669205 - r669209;
double r669211 = r669207 * r669210;
double r669212 = r669195 + r669211;
double r669213 = r669193 ? r669204 : r669212;
return r669213;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 5.8 |
|---|---|
| Target | 5.7 |
| Herbie | 3.0 |
if (* z z) < 1.7139089614460649e+308Initial program 0.1
rmApplied sub-neg0.1
Simplified0.1
if 1.7139089614460649e+308 < (* z z) Initial program 64.0
rmApplied sub-neg64.0
Simplified64.0
rmApplied sqr-pow64.0
Applied add-sqr-sqrt64.0
Applied difference-of-squares64.0
Applied associate-*r*32.4
Simplified32.4
Final simplification3.0
herbie shell --seed 2020064
(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))))