Average Error: 0.0 → 0.0
Time: 15.5s
Precision: 64
\[\left(\left(x - \left(y - 1\right) \cdot z\right) - \left(t - 1\right) \cdot a\right) + \left(\left(y + t\right) - 2\right) \cdot b\]
\[\left(\left(y + t\right) - 2\right) \cdot b + \mathsf{fma}\left(a, 1 - t, \mathsf{fma}\left(z, 1 - y, x\right)\right)\]
\left(\left(x - \left(y - 1\right) \cdot z\right) - \left(t - 1\right) \cdot a\right) + \left(\left(y + t\right) - 2\right) \cdot b
\left(\left(y + t\right) - 2\right) \cdot b + \mathsf{fma}\left(a, 1 - t, \mathsf{fma}\left(z, 1 - y, x\right)\right)
double f(double x, double y, double z, double t, double a, double b) {
        double r2042075 = x;
        double r2042076 = y;
        double r2042077 = 1.0;
        double r2042078 = r2042076 - r2042077;
        double r2042079 = z;
        double r2042080 = r2042078 * r2042079;
        double r2042081 = r2042075 - r2042080;
        double r2042082 = t;
        double r2042083 = r2042082 - r2042077;
        double r2042084 = a;
        double r2042085 = r2042083 * r2042084;
        double r2042086 = r2042081 - r2042085;
        double r2042087 = r2042076 + r2042082;
        double r2042088 = 2.0;
        double r2042089 = r2042087 - r2042088;
        double r2042090 = b;
        double r2042091 = r2042089 * r2042090;
        double r2042092 = r2042086 + r2042091;
        return r2042092;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r2042093 = y;
        double r2042094 = t;
        double r2042095 = r2042093 + r2042094;
        double r2042096 = 2.0;
        double r2042097 = r2042095 - r2042096;
        double r2042098 = b;
        double r2042099 = r2042097 * r2042098;
        double r2042100 = a;
        double r2042101 = 1.0;
        double r2042102 = r2042101 - r2042094;
        double r2042103 = z;
        double r2042104 = r2042101 - r2042093;
        double r2042105 = x;
        double r2042106 = fma(r2042103, r2042104, r2042105);
        double r2042107 = fma(r2042100, r2042102, r2042106);
        double r2042108 = r2042099 + r2042107;
        return r2042108;
}

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\right) \cdot z\right) - \left(t - 1\right) \cdot a\right) + \left(\left(y + t\right) - 2\right) \cdot b\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(\left(t + y\right) - 2, b, \mathsf{fma}\left(a, 1 - t, \mathsf{fma}\left(z, 1 - y, x\right)\right)\right)}\]
  3. Using strategy rm
  4. Applied fma-udef0.0

    \[\leadsto \color{blue}{\left(\left(t + y\right) - 2\right) \cdot b + \mathsf{fma}\left(a, 1 - t, \mathsf{fma}\left(z, 1 - y, x\right)\right)}\]
  5. Final simplification0.0

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

Reproduce

herbie shell --seed 2019170 +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)))