Average Error: 0.0 → 0.0
Time: 18.0s
Precision: 64
\[\left(x \cdot \left(y - 1\right) - y \cdot 0.5\right) + 0.9189385332046730026078762421093415468931\]
\[\mathsf{fma}\left(y - 1, x, 0.9189385332046730026078762421093415468931 - 0.5 \cdot y\right)\]
\left(x \cdot \left(y - 1\right) - y \cdot 0.5\right) + 0.9189385332046730026078762421093415468931
\mathsf{fma}\left(y - 1, x, 0.9189385332046730026078762421093415468931 - 0.5 \cdot y\right)
double f(double x, double y) {
        double r3087082 = x;
        double r3087083 = y;
        double r3087084 = 1.0;
        double r3087085 = r3087083 - r3087084;
        double r3087086 = r3087082 * r3087085;
        double r3087087 = 0.5;
        double r3087088 = r3087083 * r3087087;
        double r3087089 = r3087086 - r3087088;
        double r3087090 = 0.918938533204673;
        double r3087091 = r3087089 + r3087090;
        return r3087091;
}

double f(double x, double y) {
        double r3087092 = y;
        double r3087093 = 1.0;
        double r3087094 = r3087092 - r3087093;
        double r3087095 = x;
        double r3087096 = 0.918938533204673;
        double r3087097 = 0.5;
        double r3087098 = r3087097 * r3087092;
        double r3087099 = r3087096 - r3087098;
        double r3087100 = fma(r3087094, r3087095, r3087099);
        return r3087100;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 0.0

    \[\left(x \cdot \left(y - 1\right) - y \cdot 0.5\right) + 0.9189385332046730026078762421093415468931\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(y - 1, x, 0.9189385332046730026078762421093415468931 - y \cdot 0.5\right)}\]
  3. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(y - 1, x, 0.9189385332046730026078762421093415468931 - 0.5 \cdot y\right)\]

Reproduce

herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y)
  :name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, A"
  (+ (- (* x (- y 1.0)) (* y 0.5)) 0.918938533204673))