Average Error: 0.3 → 0.2
Time: 3.6s
Precision: 64
\[x + \left(\left(y - x\right) \cdot 6\right) \cdot z\]
\[x + \left(y - x\right) \cdot \left(6 \cdot z\right)\]
x + \left(\left(y - x\right) \cdot 6\right) \cdot z
x + \left(y - x\right) \cdot \left(6 \cdot z\right)
double f(double x, double y, double z) {
        double r818390 = x;
        double r818391 = y;
        double r818392 = r818391 - r818390;
        double r818393 = 6.0;
        double r818394 = r818392 * r818393;
        double r818395 = z;
        double r818396 = r818394 * r818395;
        double r818397 = r818390 + r818396;
        return r818397;
}

double f(double x, double y, double z) {
        double r818398 = x;
        double r818399 = y;
        double r818400 = r818399 - r818398;
        double r818401 = 6.0;
        double r818402 = z;
        double r818403 = r818401 * r818402;
        double r818404 = r818400 * r818403;
        double r818405 = r818398 + r818404;
        return r818405;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.3
Target0.2
Herbie0.2
\[x - \left(6 \cdot z\right) \cdot \left(x - y\right)\]

Derivation

  1. Initial program 0.3

    \[x + \left(\left(y - x\right) \cdot 6\right) \cdot z\]
  2. Using strategy rm
  3. Applied associate-*l*0.2

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

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

Reproduce

herbie shell --seed 2020021 
(FPCore (x y z)
  :name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, E"
  :precision binary64

  :herbie-target
  (- x (* (* 6 z) (- x y)))

  (+ x (* (* (- y x) 6) z)))