Average Error: 6.7 → 0.4
Time: 1.1m
Precision: 64
\[\left(\left(x - 1.0\right) \cdot \log y + \left(z - 1.0\right) \cdot \log \left(1.0 - y\right)\right) - t\]
\[\mathsf{fma}\left(\log 1.0 - \mathsf{fma}\left(1.0, y, \frac{y}{1.0} \cdot \left(\frac{y}{1.0} \cdot \frac{1}{2}\right)\right), z - 1.0, \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \left(x - 1.0\right) + \left(\log \left(\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \left(x - 1.0\right) - t\right)\right)\]
\left(\left(x - 1.0\right) \cdot \log y + \left(z - 1.0\right) \cdot \log \left(1.0 - y\right)\right) - t
\mathsf{fma}\left(\log 1.0 - \mathsf{fma}\left(1.0, y, \frac{y}{1.0} \cdot \left(\frac{y}{1.0} \cdot \frac{1}{2}\right)\right), z - 1.0, \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \left(x - 1.0\right) + \left(\log \left(\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \left(x - 1.0\right) - t\right)\right)
double f(double x, double y, double z, double t) {
        double r1680689 = x;
        double r1680690 = 1.0;
        double r1680691 = r1680689 - r1680690;
        double r1680692 = y;
        double r1680693 = log(r1680692);
        double r1680694 = r1680691 * r1680693;
        double r1680695 = z;
        double r1680696 = r1680695 - r1680690;
        double r1680697 = r1680690 - r1680692;
        double r1680698 = log(r1680697);
        double r1680699 = r1680696 * r1680698;
        double r1680700 = r1680694 + r1680699;
        double r1680701 = t;
        double r1680702 = r1680700 - r1680701;
        return r1680702;
}

double f(double x, double y, double z, double t) {
        double r1680703 = 1.0;
        double r1680704 = log(r1680703);
        double r1680705 = y;
        double r1680706 = r1680705 / r1680703;
        double r1680707 = 0.5;
        double r1680708 = r1680706 * r1680707;
        double r1680709 = r1680706 * r1680708;
        double r1680710 = fma(r1680703, r1680705, r1680709);
        double r1680711 = r1680704 - r1680710;
        double r1680712 = z;
        double r1680713 = r1680712 - r1680703;
        double r1680714 = cbrt(r1680705);
        double r1680715 = r1680714 * r1680714;
        double r1680716 = log(r1680715);
        double r1680717 = x;
        double r1680718 = r1680717 - r1680703;
        double r1680719 = r1680716 * r1680718;
        double r1680720 = cbrt(r1680714);
        double r1680721 = r1680720 * r1680720;
        double r1680722 = r1680721 * r1680720;
        double r1680723 = log(r1680722);
        double r1680724 = r1680723 * r1680718;
        double r1680725 = t;
        double r1680726 = r1680724 - r1680725;
        double r1680727 = r1680719 + r1680726;
        double r1680728 = fma(r1680711, r1680713, r1680727);
        return r1680728;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Derivation

  1. Initial program 6.7

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

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

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

    \[\leadsto \mathsf{fma}\left(\color{blue}{\log 1.0 - \mathsf{fma}\left(1.0, y, \frac{y}{1.0} \cdot \left(\frac{y}{1.0} \cdot \frac{1}{2}\right)\right)}, z - 1.0, \left(x - 1.0\right) \cdot \log y - t\right)\]
  5. Using strategy rm
  6. Applied add-cube-cbrt0.4

    \[\leadsto \mathsf{fma}\left(\log 1.0 - \mathsf{fma}\left(1.0, y, \frac{y}{1.0} \cdot \left(\frac{y}{1.0} \cdot \frac{1}{2}\right)\right), z - 1.0, \left(x - 1.0\right) \cdot \log \color{blue}{\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}\right)} - t\right)\]
  7. Applied log-prod0.4

    \[\leadsto \mathsf{fma}\left(\log 1.0 - \mathsf{fma}\left(1.0, y, \frac{y}{1.0} \cdot \left(\frac{y}{1.0} \cdot \frac{1}{2}\right)\right), z - 1.0, \left(x - 1.0\right) \cdot \color{blue}{\left(\log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + \log \left(\sqrt[3]{y}\right)\right)} - t\right)\]
  8. Applied distribute-lft-in0.4

    \[\leadsto \mathsf{fma}\left(\log 1.0 - \mathsf{fma}\left(1.0, y, \frac{y}{1.0} \cdot \left(\frac{y}{1.0} \cdot \frac{1}{2}\right)\right), z - 1.0, \color{blue}{\left(\left(x - 1.0\right) \cdot \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + \left(x - 1.0\right) \cdot \log \left(\sqrt[3]{y}\right)\right)} - t\right)\]
  9. Applied associate--l+0.4

    \[\leadsto \mathsf{fma}\left(\log 1.0 - \mathsf{fma}\left(1.0, y, \frac{y}{1.0} \cdot \left(\frac{y}{1.0} \cdot \frac{1}{2}\right)\right), z - 1.0, \color{blue}{\left(x - 1.0\right) \cdot \log \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + \left(\left(x - 1.0\right) \cdot \log \left(\sqrt[3]{y}\right) - t\right)}\right)\]
  10. Using strategy rm
  11. Applied add-cube-cbrt0.4

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

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

Reproduce

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