Average Error: 0.0 → 0.0
Time: 13.0s
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(1.0 - y, z, \mathsf{fma}\left(a, 1.0 - t, 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(1.0 - y, z, \mathsf{fma}\left(a, 1.0 - t, x\right)\right)\right)
double f(double x, double y, double z, double t, double a, double b) {
        double r568889 = x;
        double r568890 = y;
        double r568891 = 1.0;
        double r568892 = r568890 - r568891;
        double r568893 = z;
        double r568894 = r568892 * r568893;
        double r568895 = r568889 - r568894;
        double r568896 = t;
        double r568897 = r568896 - r568891;
        double r568898 = a;
        double r568899 = r568897 * r568898;
        double r568900 = r568895 - r568899;
        double r568901 = r568890 + r568896;
        double r568902 = 2.0;
        double r568903 = r568901 - r568902;
        double r568904 = b;
        double r568905 = r568903 * r568904;
        double r568906 = r568900 + r568905;
        return r568906;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r568907 = y;
        double r568908 = t;
        double r568909 = r568907 + r568908;
        double r568910 = 2.0;
        double r568911 = r568909 - r568910;
        double r568912 = b;
        double r568913 = 1.0;
        double r568914 = r568913 - r568907;
        double r568915 = z;
        double r568916 = a;
        double r568917 = r568913 - r568908;
        double r568918 = x;
        double r568919 = fma(r568916, r568917, r568918);
        double r568920 = fma(r568914, r568915, r568919);
        double r568921 = fma(r568911, r568912, r568920);
        return r568921;
}

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(1.0 - y, z, \mathsf{fma}\left(a, 1.0 - t, x\right)\right)\right)}\]
  3. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(\left(y + t\right) - 2.0, b, \mathsf{fma}\left(1.0 - y, z, \mathsf{fma}\left(a, 1.0 - t, 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)))