Average Error: 0.0 → 0.0
Time: 15.8s
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 r1894430 = x;
        double r1894431 = y;
        double r1894432 = 1.0;
        double r1894433 = r1894431 - r1894432;
        double r1894434 = z;
        double r1894435 = r1894433 * r1894434;
        double r1894436 = r1894430 - r1894435;
        double r1894437 = t;
        double r1894438 = r1894437 - r1894432;
        double r1894439 = a;
        double r1894440 = r1894438 * r1894439;
        double r1894441 = r1894436 - r1894440;
        double r1894442 = r1894431 + r1894437;
        double r1894443 = 2.0;
        double r1894444 = r1894442 - r1894443;
        double r1894445 = b;
        double r1894446 = r1894444 * r1894445;
        double r1894447 = r1894441 + r1894446;
        return r1894447;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r1894448 = y;
        double r1894449 = t;
        double r1894450 = r1894448 + r1894449;
        double r1894451 = 2.0;
        double r1894452 = r1894450 - r1894451;
        double r1894453 = b;
        double r1894454 = a;
        double r1894455 = 1.0;
        double r1894456 = r1894455 - r1894449;
        double r1894457 = z;
        double r1894458 = r1894455 - r1894448;
        double r1894459 = x;
        double r1894460 = fma(r1894457, r1894458, r1894459);
        double r1894461 = fma(r1894454, r1894456, r1894460);
        double r1894462 = fma(r1894452, r1894453, r1894461);
        return r1894462;
}

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