Average Error: 0.0 → 0.0
Time: 3.4s
Precision: 64
\[\left(x \cdot \left(y - 1\right) - y \cdot 0.5\right) + 0.9189385332046730026078762421093415468931\]
\[\mathsf{fma}\left(x, y - 1, 0.9189385332046730026078762421093415468931 - 0.5 \cdot y\right)\]
\left(x \cdot \left(y - 1\right) - y \cdot 0.5\right) + 0.9189385332046730026078762421093415468931
\mathsf{fma}\left(x, y - 1, 0.9189385332046730026078762421093415468931 - 0.5 \cdot y\right)
double f(double x, double y) {
        double r1317920 = x;
        double r1317921 = y;
        double r1317922 = 1.0;
        double r1317923 = r1317921 - r1317922;
        double r1317924 = r1317920 * r1317923;
        double r1317925 = 0.5;
        double r1317926 = r1317921 * r1317925;
        double r1317927 = r1317924 - r1317926;
        double r1317928 = 0.918938533204673;
        double r1317929 = r1317927 + r1317928;
        return r1317929;
}

double f(double x, double y) {
        double r1317930 = x;
        double r1317931 = y;
        double r1317932 = 1.0;
        double r1317933 = r1317931 - r1317932;
        double r1317934 = 0.918938533204673;
        double r1317935 = 0.5;
        double r1317936 = r1317935 * r1317931;
        double r1317937 = r1317934 - r1317936;
        double r1317938 = fma(r1317930, r1317933, r1317937);
        return r1317938;
}

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(x, y - 1, 0.9189385332046730026078762421093415468931 - 0.5 \cdot y\right)}\]
  3. Final simplification0.0

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

Reproduce

herbie shell --seed 2019172 +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))