Average Error: 0.3 → 0.3
Time: 12.0s
Precision: 64
\[x + \left(\left(y - x\right) \cdot 6\right) \cdot z\]
\[\mathsf{fma}\left(z, \left(y - x\right) \cdot 6, x\right)\]
x + \left(\left(y - x\right) \cdot 6\right) \cdot z
\mathsf{fma}\left(z, \left(y - x\right) \cdot 6, x\right)
double f(double x, double y, double z) {
        double r24730755 = x;
        double r24730756 = y;
        double r24730757 = r24730756 - r24730755;
        double r24730758 = 6.0;
        double r24730759 = r24730757 * r24730758;
        double r24730760 = z;
        double r24730761 = r24730759 * r24730760;
        double r24730762 = r24730755 + r24730761;
        return r24730762;
}

double f(double x, double y, double z) {
        double r24730763 = z;
        double r24730764 = y;
        double r24730765 = x;
        double r24730766 = r24730764 - r24730765;
        double r24730767 = 6.0;
        double r24730768 = r24730766 * r24730767;
        double r24730769 = fma(r24730763, r24730768, r24730765);
        return r24730769;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original0.3
Target0.2
Herbie0.3
\[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. Simplified0.3

    \[\leadsto \color{blue}{\mathsf{fma}\left(z, \left(y - x\right) \cdot 6, x\right)}\]
  3. Final simplification0.3

    \[\leadsto \mathsf{fma}\left(z, \left(y - x\right) \cdot 6, x\right)\]

Reproduce

herbie shell --seed 2019192 +o rules:numerics
(FPCore (x y z)
  :name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, E"

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

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