Average Error: 0.0 → 0.0
Time: 12.6s
Precision: 64
\[\left(\left(x - \left(y - 1.0\right) \cdot z\right) - \left(t - 1.0\right) \cdot a\right) + \left(\left(y + t\right) - 2.0\right) \cdot b\]
\[\mathsf{fma}\left(\left(y + t\right) - 2.0, b, \mathsf{fma}\left(a, 1.0 - t, \mathsf{fma}\left(z, 1.0 - y, x\right)\right)\right)\]
\left(\left(x - \left(y - 1.0\right) \cdot z\right) - \left(t - 1.0\right) \cdot a\right) + \left(\left(y + t\right) - 2.0\right) \cdot b
\mathsf{fma}\left(\left(y + t\right) - 2.0, b, \mathsf{fma}\left(a, 1.0 - t, \mathsf{fma}\left(z, 1.0 - y, x\right)\right)\right)
double f(double x, double y, double z, double t, double a, double b) {
        double r766474 = x;
        double r766475 = y;
        double r766476 = 1.0;
        double r766477 = r766475 - r766476;
        double r766478 = z;
        double r766479 = r766477 * r766478;
        double r766480 = r766474 - r766479;
        double r766481 = t;
        double r766482 = r766481 - r766476;
        double r766483 = a;
        double r766484 = r766482 * r766483;
        double r766485 = r766480 - r766484;
        double r766486 = r766475 + r766481;
        double r766487 = 2.0;
        double r766488 = r766486 - r766487;
        double r766489 = b;
        double r766490 = r766488 * r766489;
        double r766491 = r766485 + r766490;
        return r766491;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r766492 = y;
        double r766493 = t;
        double r766494 = r766492 + r766493;
        double r766495 = 2.0;
        double r766496 = r766494 - r766495;
        double r766497 = b;
        double r766498 = a;
        double r766499 = 1.0;
        double r766500 = r766499 - r766493;
        double r766501 = z;
        double r766502 = r766499 - r766492;
        double r766503 = x;
        double r766504 = fma(r766501, r766502, r766503);
        double r766505 = fma(r766498, r766500, r766504);
        double r766506 = fma(r766496, r766497, r766505);
        return r766506;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Derivation

  1. Initial program 0.0

    \[\left(\left(x - \left(y - 1.0\right) \cdot z\right) - \left(t - 1.0\right) \cdot a\right) + \left(\left(y + t\right) - 2.0\right) \cdot b\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(\left(t + y\right) - 2.0, b, \mathsf{fma}\left(a, 1.0 - t, \mathsf{fma}\left(z, 1.0 - y, x\right)\right)\right)}\]
  3. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(\left(y + t\right) - 2.0, b, \mathsf{fma}\left(a, 1.0 - t, \mathsf{fma}\left(z, 1.0 - y, x\right)\right)\right)\]

Reproduce

herbie shell --seed 2019156 +o rules:numerics
(FPCore (x y z t a b)
  :name "Statistics.Distribution.Beta:$centropy from math-functions-0.1.5.2"
  (+ (- (- x (* (- y 1.0) z)) (* (- t 1.0) a)) (* (- (+ y t) 2.0) b)))