Average Error: 5.9 → 3.7
Time: 7.4s
Precision: 64
\[x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\]
\[\begin{array}{l} \mathbf{if}\;z \le -1.878607511397568816928379911623255369938 \cdot 10^{151} \lor \neg \left(z \le 2.818024192072389096284543847407685283902 \cdot 10^{114}\right):\\ \;\;\;\;x \cdot x - \left(\left(y \cdot 4\right) \cdot \left(z + \sqrt{t}\right)\right) \cdot \left(z - \sqrt{t}\right)\\ \mathbf{else}:\\ \;\;\;\;x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - 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 \le -1.878607511397568816928379911623255369938 \cdot 10^{151} \lor \neg \left(z \le 2.818024192072389096284543847407685283902 \cdot 10^{114}\right):\\
\;\;\;\;x \cdot x - \left(\left(y \cdot 4\right) \cdot \left(z + \sqrt{t}\right)\right) \cdot \left(z - \sqrt{t}\right)\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r463754 = x;
        double r463755 = r463754 * r463754;
        double r463756 = y;
        double r463757 = 4.0;
        double r463758 = r463756 * r463757;
        double r463759 = z;
        double r463760 = r463759 * r463759;
        double r463761 = t;
        double r463762 = r463760 - r463761;
        double r463763 = r463758 * r463762;
        double r463764 = r463755 - r463763;
        return r463764;
}

double f(double x, double y, double z, double t) {
        double r463765 = z;
        double r463766 = -1.8786075113975688e+151;
        bool r463767 = r463765 <= r463766;
        double r463768 = 2.818024192072389e+114;
        bool r463769 = r463765 <= r463768;
        double r463770 = !r463769;
        bool r463771 = r463767 || r463770;
        double r463772 = x;
        double r463773 = r463772 * r463772;
        double r463774 = y;
        double r463775 = 4.0;
        double r463776 = r463774 * r463775;
        double r463777 = t;
        double r463778 = sqrt(r463777);
        double r463779 = r463765 + r463778;
        double r463780 = r463776 * r463779;
        double r463781 = r463765 - r463778;
        double r463782 = r463780 * r463781;
        double r463783 = r463773 - r463782;
        double r463784 = r463765 * r463765;
        double r463785 = r463784 - r463777;
        double r463786 = r463776 * r463785;
        double r463787 = r463773 - r463786;
        double r463788 = r463771 ? r463783 : r463787;
        return r463788;
}

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.9
Target5.8
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 < -1.8786075113975688e+151 or 2.818024192072389e+114 < z

    1. Initial program 48.6

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

      \[\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-squares56.6

      \[\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*30.8

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

    if -1.8786075113975688e+151 < z < 2.818024192072389e+114

    1. Initial program 0.1

      \[x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification3.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -1.878607511397568816928379911623255369938 \cdot 10^{151} \lor \neg \left(z \le 2.818024192072389096284543847407685283902 \cdot 10^{114}\right):\\ \;\;\;\;x \cdot x - \left(\left(y \cdot 4\right) \cdot \left(z + \sqrt{t}\right)\right) \cdot \left(z - \sqrt{t}\right)\\ \mathbf{else}:\\ \;\;\;\;x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\\ \end{array}\]

Reproduce

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