Average Error: 0.1 → 0.1
Time: 17.2s
Precision: 64
\[\left(x \cdot \log y - z\right) - y\]
\[\mathsf{fma}\left(x, \log y, -y\right) - z\]
\left(x \cdot \log y - z\right) - y
\mathsf{fma}\left(x, \log y, -y\right) - z
double f(double x, double y, double z) {
        double r25315 = x;
        double r25316 = y;
        double r25317 = log(r25316);
        double r25318 = r25315 * r25317;
        double r25319 = z;
        double r25320 = r25318 - r25319;
        double r25321 = r25320 - r25316;
        return r25321;
}

double f(double x, double y, double z) {
        double r25322 = x;
        double r25323 = y;
        double r25324 = log(r25323);
        double r25325 = -r25323;
        double r25326 = fma(r25322, r25324, r25325);
        double r25327 = z;
        double r25328 = r25326 - r25327;
        return r25328;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Initial program 0.1

    \[\left(x \cdot \log y - z\right) - y\]
  2. Taylor expanded around -inf 64.0

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

    \[\leadsto \color{blue}{\mathsf{fma}\left(x, 0 + \log y, -y\right) - z}\]
  4. Final simplification0.1

    \[\leadsto \mathsf{fma}\left(x, \log y, -y\right) - z\]

Reproduce

herbie shell --seed 2019194 +o rules:numerics
(FPCore (x y z)
  :name "Statistics.Distribution.Poisson:$clogProbability from math-functions-0.1.5.2"
  (- (- (* x (log y)) z) y))