Average Error: 6.3 → 0.1
Time: 13.3s
Precision: 64
\[x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\]
\[x \cdot x - \left(z \cdot \left(z \cdot \left(y \cdot 4\right)\right) + \left(-t\right) \cdot \left(y \cdot 4\right)\right)\]
x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
x \cdot x - \left(z \cdot \left(z \cdot \left(y \cdot 4\right)\right) + \left(-t\right) \cdot \left(y \cdot 4\right)\right)
double f(double x, double y, double z, double t) {
        double r542155 = x;
        double r542156 = r542155 * r542155;
        double r542157 = y;
        double r542158 = 4.0;
        double r542159 = r542157 * r542158;
        double r542160 = z;
        double r542161 = r542160 * r542160;
        double r542162 = t;
        double r542163 = r542161 - r542162;
        double r542164 = r542159 * r542163;
        double r542165 = r542156 - r542164;
        return r542165;
}

double f(double x, double y, double z, double t) {
        double r542166 = x;
        double r542167 = r542166 * r542166;
        double r542168 = z;
        double r542169 = y;
        double r542170 = 4.0;
        double r542171 = r542169 * r542170;
        double r542172 = r542168 * r542171;
        double r542173 = r542168 * r542172;
        double r542174 = t;
        double r542175 = -r542174;
        double r542176 = r542175 * r542171;
        double r542177 = r542173 + r542176;
        double r542178 = r542167 - r542177;
        return r542178;
}

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.3
Target6.3
Herbie0.1
\[x \cdot x - 4 \cdot \left(y \cdot \left(z \cdot z - t\right)\right)\]

Derivation

  1. Initial program 6.3

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

    \[\leadsto x \cdot x - \left(y \cdot 4\right) \cdot \color{blue}{\left(z \cdot z + \left(-t\right)\right)}\]
  4. Applied distribute-lft-in6.3

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

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

    \[\leadsto x \cdot x - \left(\left(z \cdot z\right) \cdot \left(y \cdot 4\right) + \color{blue}{\left(-t\right) \cdot \left(y \cdot 4\right)}\right)\]
  7. Using strategy rm
  8. Applied associate-*l*0.1

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

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

Reproduce

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