Average Error: 6.9 → 0.3
Time: 48.2s
Precision: 64
\[\left(\left(x - 1\right) \cdot \log y + \left(z - 1\right) \cdot \log \left(1 - y\right)\right) - t\]
\[\mathsf{fma}\left(x - 1, \log y, \left(z - 1\right) \cdot \left(\log 1 - \mathsf{fma}\left(1, y, \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right) - t\]
\left(\left(x - 1\right) \cdot \log y + \left(z - 1\right) \cdot \log \left(1 - y\right)\right) - t
\mathsf{fma}\left(x - 1, \log y, \left(z - 1\right) \cdot \left(\log 1 - \mathsf{fma}\left(1, y, \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right) - t
double f(double x, double y, double z, double t) {
        double r111920 = x;
        double r111921 = 1.0;
        double r111922 = r111920 - r111921;
        double r111923 = y;
        double r111924 = log(r111923);
        double r111925 = r111922 * r111924;
        double r111926 = z;
        double r111927 = r111926 - r111921;
        double r111928 = r111921 - r111923;
        double r111929 = log(r111928);
        double r111930 = r111927 * r111929;
        double r111931 = r111925 + r111930;
        double r111932 = t;
        double r111933 = r111931 - r111932;
        return r111933;
}

double f(double x, double y, double z, double t) {
        double r111934 = x;
        double r111935 = 1.0;
        double r111936 = r111934 - r111935;
        double r111937 = y;
        double r111938 = log(r111937);
        double r111939 = z;
        double r111940 = r111939 - r111935;
        double r111941 = log(r111935);
        double r111942 = 0.5;
        double r111943 = 2.0;
        double r111944 = pow(r111937, r111943);
        double r111945 = pow(r111935, r111943);
        double r111946 = r111944 / r111945;
        double r111947 = r111942 * r111946;
        double r111948 = fma(r111935, r111937, r111947);
        double r111949 = r111941 - r111948;
        double r111950 = r111940 * r111949;
        double r111951 = fma(r111936, r111938, r111950);
        double r111952 = t;
        double r111953 = r111951 - r111952;
        return r111953;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Derivation

  1. Initial program 6.9

    \[\left(\left(x - 1\right) \cdot \log y + \left(z - 1\right) \cdot \log \left(1 - y\right)\right) - t\]
  2. Simplified6.9

    \[\leadsto \color{blue}{\mathsf{fma}\left(x - 1, \log y, \left(z - 1\right) \cdot \log \left(1 - y\right)\right) - t}\]
  3. Taylor expanded around 0 0.3

    \[\leadsto \mathsf{fma}\left(x - 1, \log y, \left(z - 1\right) \cdot \color{blue}{\left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)}\right) - t\]
  4. Simplified0.3

    \[\leadsto \mathsf{fma}\left(x - 1, \log y, \left(z - 1\right) \cdot \color{blue}{\left(\log 1 - \mathsf{fma}\left(1, y, \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)}\right) - t\]
  5. Final simplification0.3

    \[\leadsto \mathsf{fma}\left(x - 1, \log y, \left(z - 1\right) \cdot \left(\log 1 - \mathsf{fma}\left(1, y, \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right) - t\]

Reproduce

herbie shell --seed 2019325 +o rules:numerics
(FPCore (x y z t)
  :name "Statistics.Distribution.Beta:$cdensity from math-functions-0.1.5.2"
  :precision binary64
  (- (+ (* (- x 1) (log y)) (* (- z 1) (log (- 1 y)))) t))