Average Error: 0.0 → 0.0
Time: 1.1s
Precision: 64
\[\left(x \cdot \left(y - 1\right) - y \cdot 0.5\right) + 0.9189385332046730026078762421093415468931\]
\[\left(\mathsf{fma}\left(x, y, -\mathsf{fma}\left(1, x, 0.5 \cdot y\right)\right) + \mathsf{fma}\left(-0.5, y, 0.5 \cdot y\right)\right) + 0.9189385332046730026078762421093415468931\]
\left(x \cdot \left(y - 1\right) - y \cdot 0.5\right) + 0.9189385332046730026078762421093415468931
\left(\mathsf{fma}\left(x, y, -\mathsf{fma}\left(1, x, 0.5 \cdot y\right)\right) + \mathsf{fma}\left(-0.5, y, 0.5 \cdot y\right)\right) + 0.9189385332046730026078762421093415468931
double f(double x, double y) {
        double r76094 = x;
        double r76095 = y;
        double r76096 = 1.0;
        double r76097 = r76095 - r76096;
        double r76098 = r76094 * r76097;
        double r76099 = 0.5;
        double r76100 = r76095 * r76099;
        double r76101 = r76098 - r76100;
        double r76102 = 0.918938533204673;
        double r76103 = r76101 + r76102;
        return r76103;
}

double f(double x, double y) {
        double r76104 = x;
        double r76105 = y;
        double r76106 = 1.0;
        double r76107 = 0.5;
        double r76108 = r76107 * r76105;
        double r76109 = fma(r76106, r76104, r76108);
        double r76110 = -r76109;
        double r76111 = fma(r76104, r76105, r76110);
        double r76112 = -r76107;
        double r76113 = fma(r76112, r76105, r76108);
        double r76114 = r76111 + r76113;
        double r76115 = 0.918938533204673;
        double r76116 = r76114 + r76115;
        return r76116;
}

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. Using strategy rm
  3. Applied prod-diff0.0

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

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

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

Reproduce

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