Average Error: 0.1 → 0.1
Time: 12.3s
Precision: 64
\[\left(1 - x\right) + y \cdot \sqrt{x}\]
\[\mathsf{fma}\left(y, \sqrt{x}, 1 - x\right)\]
\left(1 - x\right) + y \cdot \sqrt{x}
\mathsf{fma}\left(y, \sqrt{x}, 1 - x\right)
double f(double x, double y) {
        double r102047 = 1.0;
        double r102048 = x;
        double r102049 = r102047 - r102048;
        double r102050 = y;
        double r102051 = sqrt(r102048);
        double r102052 = r102050 * r102051;
        double r102053 = r102049 + r102052;
        return r102053;
}

double f(double x, double y) {
        double r102054 = y;
        double r102055 = x;
        double r102056 = sqrt(r102055);
        double r102057 = 1.0;
        double r102058 = r102057 - r102055;
        double r102059 = fma(r102054, r102056, r102058);
        return r102059;
}

Error

Bits error versus x

Bits error versus y

Derivation

  1. Initial program 0.1

    \[\left(1 - x\right) + y \cdot \sqrt{x}\]
  2. Simplified0.1

    \[\leadsto \color{blue}{\mathsf{fma}\left(y, \sqrt{x}, 1 - x\right)}\]
  3. Final simplification0.1

    \[\leadsto \mathsf{fma}\left(y, \sqrt{x}, 1 - x\right)\]

Reproduce

herbie shell --seed 2020046 +o rules:numerics
(FPCore (x y)
  :name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, E"
  :precision binary64
  (+ (- 1 x) (* y (sqrt x))))