Average Error: 6.0 → 3.7
Time: 16.9s
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 9.472727865198406537242888277320643489547 \cdot 10^{276}:\\ \;\;\;\;x \cdot x - \left(4 \cdot y\right) \cdot \left(z \cdot z - t\right)\\ \mathbf{else}:\\ \;\;\;\;x \cdot x - \left(\left(\sqrt{t} + z\right) \cdot \left(4 \cdot y\right)\right) \cdot \left(z - \sqrt{t}\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 9.472727865198406537242888277320643489547 \cdot 10^{276}:\\
\;\;\;\;x \cdot x - \left(4 \cdot y\right) \cdot \left(z \cdot z - t\right)\\

\mathbf{else}:\\
\;\;\;\;x \cdot x - \left(\left(\sqrt{t} + z\right) \cdot \left(4 \cdot y\right)\right) \cdot \left(z - \sqrt{t}\right)\\

\end{array}
double f(double x, double y, double z, double t) {
        double r547911 = x;
        double r547912 = r547911 * r547911;
        double r547913 = y;
        double r547914 = 4.0;
        double r547915 = r547913 * r547914;
        double r547916 = z;
        double r547917 = r547916 * r547916;
        double r547918 = t;
        double r547919 = r547917 - r547918;
        double r547920 = r547915 * r547919;
        double r547921 = r547912 - r547920;
        return r547921;
}

double f(double x, double y, double z, double t) {
        double r547922 = z;
        double r547923 = r547922 * r547922;
        double r547924 = 9.472727865198407e+276;
        bool r547925 = r547923 <= r547924;
        double r547926 = x;
        double r547927 = r547926 * r547926;
        double r547928 = 4.0;
        double r547929 = y;
        double r547930 = r547928 * r547929;
        double r547931 = t;
        double r547932 = r547923 - r547931;
        double r547933 = r547930 * r547932;
        double r547934 = r547927 - r547933;
        double r547935 = sqrt(r547931);
        double r547936 = r547935 + r547922;
        double r547937 = r547936 * r547930;
        double r547938 = r547922 - r547935;
        double r547939 = r547937 * r547938;
        double r547940 = r547927 - r547939;
        double r547941 = r547925 ? r547934 : r547940;
        return r547941;
}

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

Original6.0
Target6.0
Herbie3.7
\[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) < 9.472727865198407e+276

    1. Initial program 0.1

      \[x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\]

    if 9.472727865198407e+276 < (* z z)

    1. Initial program 52.1

      \[x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt58.4

      \[\leadsto x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - \color{blue}{\sqrt{t} \cdot \sqrt{t}}\right)\]
    4. Applied difference-of-squares58.4

      \[\leadsto x \cdot x - \left(y \cdot 4\right) \cdot \color{blue}{\left(\left(z + \sqrt{t}\right) \cdot \left(z - \sqrt{t}\right)\right)}\]
    5. Applied associate-*r*32.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \cdot z \le 9.472727865198406537242888277320643489547 \cdot 10^{276}:\\ \;\;\;\;x \cdot x - \left(4 \cdot y\right) \cdot \left(z \cdot z - t\right)\\ \mathbf{else}:\\ \;\;\;\;x \cdot x - \left(\left(\sqrt{t} + z\right) \cdot \left(4 \cdot y\right)\right) \cdot \left(z - \sqrt{t}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019196 
(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))))