Average Error: 0.0 → 0.0
Time: 20.0s
Precision: 64
\[\left(\frac{\sqrt{2}}{4} \cdot \sqrt{1 - 3 \cdot \left(v \cdot v\right)}\right) \cdot \left(1 - v \cdot v\right)\]
\[\mathsf{expm1}\left(\left(\mathsf{log1p}\left(\left(\frac{\sqrt{2}}{4} - \frac{\sqrt{2}}{4} \cdot \left(v \cdot v\right)\right)\right)\right)\right) \cdot \sqrt{\mathsf{fma}\left(\left(v \cdot v\right), -3, 1\right)}\]
\left(\frac{\sqrt{2}}{4} \cdot \sqrt{1 - 3 \cdot \left(v \cdot v\right)}\right) \cdot \left(1 - v \cdot v\right)
\mathsf{expm1}\left(\left(\mathsf{log1p}\left(\left(\frac{\sqrt{2}}{4} - \frac{\sqrt{2}}{4} \cdot \left(v \cdot v\right)\right)\right)\right)\right) \cdot \sqrt{\mathsf{fma}\left(\left(v \cdot v\right), -3, 1\right)}
double f(double v) {
        double r3872960 = 2.0;
        double r3872961 = sqrt(r3872960);
        double r3872962 = 4.0;
        double r3872963 = r3872961 / r3872962;
        double r3872964 = 1.0;
        double r3872965 = 3.0;
        double r3872966 = v;
        double r3872967 = r3872966 * r3872966;
        double r3872968 = r3872965 * r3872967;
        double r3872969 = r3872964 - r3872968;
        double r3872970 = sqrt(r3872969);
        double r3872971 = r3872963 * r3872970;
        double r3872972 = r3872964 - r3872967;
        double r3872973 = r3872971 * r3872972;
        return r3872973;
}

double f(double v) {
        double r3872974 = 2.0;
        double r3872975 = sqrt(r3872974);
        double r3872976 = 4.0;
        double r3872977 = r3872975 / r3872976;
        double r3872978 = v;
        double r3872979 = r3872978 * r3872978;
        double r3872980 = r3872977 * r3872979;
        double r3872981 = r3872977 - r3872980;
        double r3872982 = log1p(r3872981);
        double r3872983 = expm1(r3872982);
        double r3872984 = -3.0;
        double r3872985 = 1.0;
        double r3872986 = fma(r3872979, r3872984, r3872985);
        double r3872987 = sqrt(r3872986);
        double r3872988 = r3872983 * r3872987;
        return r3872988;
}

Error

Bits error versus v

Derivation

  1. Initial program 0.0

    \[\left(\frac{\sqrt{2}}{4} \cdot \sqrt{1 - 3 \cdot \left(v \cdot v\right)}\right) \cdot \left(1 - v \cdot v\right)\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\left(\frac{\sqrt{2}}{4} - \frac{\sqrt{2}}{4} \cdot \left(v \cdot v\right)\right) \cdot \sqrt{\mathsf{fma}\left(\left(v \cdot v\right), -3, 1\right)}}\]
  3. Using strategy rm
  4. Applied expm1-log1p-u0.0

    \[\leadsto \color{blue}{\mathsf{expm1}\left(\left(\mathsf{log1p}\left(\left(\frac{\sqrt{2}}{4} - \frac{\sqrt{2}}{4} \cdot \left(v \cdot v\right)\right)\right)\right)\right)} \cdot \sqrt{\mathsf{fma}\left(\left(v \cdot v\right), -3, 1\right)}\]
  5. Final simplification0.0

    \[\leadsto \mathsf{expm1}\left(\left(\mathsf{log1p}\left(\left(\frac{\sqrt{2}}{4} - \frac{\sqrt{2}}{4} \cdot \left(v \cdot v\right)\right)\right)\right)\right) \cdot \sqrt{\mathsf{fma}\left(\left(v \cdot v\right), -3, 1\right)}\]

Reproduce

herbie shell --seed 2019130 +o rules:numerics
(FPCore (v)
  :name "Falkner and Boettcher, Appendix B, 2"
  (* (* (/ (sqrt 2) 4) (sqrt (- 1 (* 3 (* v v))))) (- 1 (* v v))))