Average Error: 5.8 → 3.0
Time: 3.6s
Precision: 64
\[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}\]
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;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original5.8
Target5.7
Herbie3.0
\[x \cdot x - 4 \cdot \left(y \cdot \left(z \cdot z - t\right)\right)\]

Derivation

  1. Split input into 2 regimes
  2. if (* z z) < 1.7139089614460649e+308

    1. Initial program 0.1

      \[x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\]
    2. Using strategy rm
    3. Applied sub-neg0.1

      \[\leadsto \color{blue}{x \cdot x + \left(-\left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\right)}\]
    4. Simplified0.1

      \[\leadsto x \cdot x + \color{blue}{\left(y \cdot 4\right) \cdot \left(t - {z}^{2}\right)}\]

    if 1.7139089614460649e+308 < (* z z)

    1. Initial program 64.0

      \[x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\]
    2. Using strategy rm
    3. Applied sub-neg64.0

      \[\leadsto \color{blue}{x \cdot x + \left(-\left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\right)}\]
    4. Simplified64.0

      \[\leadsto x \cdot x + \color{blue}{\left(y \cdot 4\right) \cdot \left(t - {z}^{2}\right)}\]
    5. Using strategy rm
    6. Applied sqr-pow64.0

      \[\leadsto x \cdot x + \left(y \cdot 4\right) \cdot \left(t - \color{blue}{{z}^{\left(\frac{2}{2}\right)} \cdot {z}^{\left(\frac{2}{2}\right)}}\right)\]
    7. Applied add-sqr-sqrt64.0

      \[\leadsto x \cdot x + \left(y \cdot 4\right) \cdot \left(\color{blue}{\sqrt{t} \cdot \sqrt{t}} - {z}^{\left(\frac{2}{2}\right)} \cdot {z}^{\left(\frac{2}{2}\right)}\right)\]
    8. Applied difference-of-squares64.0

      \[\leadsto x \cdot x + \left(y \cdot 4\right) \cdot \color{blue}{\left(\left(\sqrt{t} + {z}^{\left(\frac{2}{2}\right)}\right) \cdot \left(\sqrt{t} - {z}^{\left(\frac{2}{2}\right)}\right)\right)}\]
    9. Applied associate-*r*32.4

      \[\leadsto x \cdot x + \color{blue}{\left(\left(y \cdot 4\right) \cdot \left(\sqrt{t} + {z}^{\left(\frac{2}{2}\right)}\right)\right) \cdot \left(\sqrt{t} - {z}^{\left(\frac{2}{2}\right)}\right)}\]
    10. Simplified32.4

      \[\leadsto x \cdot x + \color{blue}{\left(\left(z + \sqrt{t}\right) \cdot \left(y \cdot 4\right)\right)} \cdot \left(\sqrt{t} - {z}^{\left(\frac{2}{2}\right)}\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.0

    \[\leadsto \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}\]

Reproduce

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))))