Average Error: 6.2 → 0.1
Time: 3.6s
Precision: 64
\[x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)\]
\[x \cdot x - \left(\left(\left(y \cdot 4\right) \cdot z\right) \cdot z + \left(y \cdot 4\right) \cdot \left(-t\right)\right)\]
x \cdot x - \left(y \cdot 4\right) \cdot \left(z \cdot z - t\right)
x \cdot x - \left(\left(\left(y \cdot 4\right) \cdot z\right) \cdot z + \left(y \cdot 4\right) \cdot \left(-t\right)\right)
double f(double x, double y, double z, double t) {
        double r519446 = x;
        double r519447 = r519446 * r519446;
        double r519448 = y;
        double r519449 = 4.0;
        double r519450 = r519448 * r519449;
        double r519451 = z;
        double r519452 = r519451 * r519451;
        double r519453 = t;
        double r519454 = r519452 - r519453;
        double r519455 = r519450 * r519454;
        double r519456 = r519447 - r519455;
        return r519456;
}

double f(double x, double y, double z, double t) {
        double r519457 = x;
        double r519458 = r519457 * r519457;
        double r519459 = y;
        double r519460 = 4.0;
        double r519461 = r519459 * r519460;
        double r519462 = z;
        double r519463 = r519461 * r519462;
        double r519464 = r519463 * r519462;
        double r519465 = t;
        double r519466 = -r519465;
        double r519467 = r519461 * r519466;
        double r519468 = r519464 + r519467;
        double r519469 = r519458 - r519468;
        return r519469;
}

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

Derivation

  1. Initial program 6.2

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

    \[\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.2

    \[\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. Using strategy rm
  6. Applied associate-*r*0.1

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

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

Reproduce

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