Average Error: 0.4 → 0.4
Time: 4.6s
Precision: 64
\[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right)\]
\[3 \cdot \left(\sqrt{x} \cdot \left(\mathsf{fma}\left(0.1111111111111111049432054187491303309798, \frac{1}{x}, y\right) - 1\right)\right)\]
\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right)
3 \cdot \left(\sqrt{x} \cdot \left(\mathsf{fma}\left(0.1111111111111111049432054187491303309798, \frac{1}{x}, y\right) - 1\right)\right)
double f(double x, double y) {
        double r492712 = 3.0;
        double r492713 = x;
        double r492714 = sqrt(r492713);
        double r492715 = r492712 * r492714;
        double r492716 = y;
        double r492717 = 1.0;
        double r492718 = 9.0;
        double r492719 = r492713 * r492718;
        double r492720 = r492717 / r492719;
        double r492721 = r492716 + r492720;
        double r492722 = r492721 - r492717;
        double r492723 = r492715 * r492722;
        return r492723;
}

double f(double x, double y) {
        double r492724 = 3.0;
        double r492725 = x;
        double r492726 = sqrt(r492725);
        double r492727 = 0.1111111111111111;
        double r492728 = 1.0;
        double r492729 = r492728 / r492725;
        double r492730 = y;
        double r492731 = fma(r492727, r492729, r492730);
        double r492732 = 1.0;
        double r492733 = r492731 - r492732;
        double r492734 = r492726 * r492733;
        double r492735 = r492724 * r492734;
        return r492735;
}

Error

Bits error versus x

Bits error versus y

Target

Original0.4
Target0.4
Herbie0.4
\[3 \cdot \left(y \cdot \sqrt{x} + \left(\frac{1}{x \cdot 9} - 1\right) \cdot \sqrt{x}\right)\]

Derivation

  1. Initial program 0.4

    \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right)\]
  2. Taylor expanded around 0 0.4

    \[\leadsto \left(3 \cdot \sqrt{x}\right) \cdot \left(\color{blue}{\left(y + 0.1111111111111111049432054187491303309798 \cdot \frac{1}{x}\right)} - 1\right)\]
  3. Simplified0.4

    \[\leadsto \left(3 \cdot \sqrt{x}\right) \cdot \left(\color{blue}{\mathsf{fma}\left(0.1111111111111111049432054187491303309798, \frac{1}{x}, y\right)} - 1\right)\]
  4. Using strategy rm
  5. Applied associate-*l*0.4

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

    \[\leadsto 3 \cdot \left(\sqrt{x} \cdot \left(\mathsf{fma}\left(0.1111111111111111049432054187491303309798, \frac{1}{x}, y\right) - 1\right)\right)\]

Reproduce

herbie shell --seed 2019362 +o rules:numerics
(FPCore (x y)
  :name "Numeric.SpecFunctions:incompleteGamma from math-functions-0.1.5.2, B"
  :precision binary64

  :herbie-target
  (* 3 (+ (* y (sqrt x)) (* (- (/ 1 (* x 9)) 1) (sqrt x))))

  (* (* 3 (sqrt x)) (- (+ y (/ 1 (* x 9))) 1)))