Average Error: 0.0 → 0.0
Time: 3.7s
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 r1855159 = x;
        double r1855160 = y;
        double r1855161 = 1.0;
        double r1855162 = r1855160 - r1855161;
        double r1855163 = r1855159 * r1855162;
        double r1855164 = 0.5;
        double r1855165 = r1855160 * r1855164;
        double r1855166 = r1855163 - r1855165;
        double r1855167 = 0.918938533204673;
        double r1855168 = r1855166 + r1855167;
        return r1855168;
}

double f(double x, double y) {
        double r1855169 = x;
        double r1855170 = y;
        double r1855171 = 1.0;
        double r1855172 = r1855170 - r1855171;
        double r1855173 = 0.918938533204673;
        double r1855174 = 0.5;
        double r1855175 = r1855174 * r1855170;
        double r1855176 = r1855173 - r1855175;
        double r1855177 = fma(r1855169, r1855172, r1855176);
        return r1855177;
}

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 2019179 +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))