Average Error: 0.0 → 0.0
Time: 9.7s
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 r959976 = x;
        double r959977 = y;
        double r959978 = 1.0;
        double r959979 = r959977 - r959978;
        double r959980 = z;
        double r959981 = r959979 * r959980;
        double r959982 = r959976 - r959981;
        double r959983 = t;
        double r959984 = r959983 - r959978;
        double r959985 = a;
        double r959986 = r959984 * r959985;
        double r959987 = r959982 - r959986;
        double r959988 = r959977 + r959983;
        double r959989 = 2.0;
        double r959990 = r959988 - r959989;
        double r959991 = b;
        double r959992 = r959990 * r959991;
        double r959993 = r959987 + r959992;
        return r959993;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r959994 = y;
        double r959995 = t;
        double r959996 = r959994 + r959995;
        double r959997 = 2.0;
        double r959998 = r959996 - r959997;
        double r959999 = b;
        double r960000 = a;
        double r960001 = 1.0;
        double r960002 = r960001 - r959995;
        double r960003 = z;
        double r960004 = r960001 - r959994;
        double r960005 = x;
        double r960006 = fma(r960003, r960004, r960005);
        double r960007 = fma(r960000, r960002, r960006);
        double r960008 = fma(r959998, r959999, r960007);
        return r960008;
}

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