Average Error: 0.0 → 0.0
Time: 8.2s
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)\]
\[\frac{\sqrt{2}}{4} \cdot \left(\sqrt{1 - 3 \cdot \left(v \cdot v\right)} \cdot \mathsf{fma}\left(-v, v, 1\right)\right)\]
\left(\frac{\sqrt{2}}{4} \cdot \sqrt{1 - 3 \cdot \left(v \cdot v\right)}\right) \cdot \left(1 - v \cdot v\right)
\frac{\sqrt{2}}{4} \cdot \left(\sqrt{1 - 3 \cdot \left(v \cdot v\right)} \cdot \mathsf{fma}\left(-v, v, 1\right)\right)
double f(double v) {
        double r230874 = 2.0;
        double r230875 = sqrt(r230874);
        double r230876 = 4.0;
        double r230877 = r230875 / r230876;
        double r230878 = 1.0;
        double r230879 = 3.0;
        double r230880 = v;
        double r230881 = r230880 * r230880;
        double r230882 = r230879 * r230881;
        double r230883 = r230878 - r230882;
        double r230884 = sqrt(r230883);
        double r230885 = r230877 * r230884;
        double r230886 = r230878 - r230881;
        double r230887 = r230885 * r230886;
        return r230887;
}

double f(double v) {
        double r230888 = 2.0;
        double r230889 = sqrt(r230888);
        double r230890 = 4.0;
        double r230891 = r230889 / r230890;
        double r230892 = 1.0;
        double r230893 = 3.0;
        double r230894 = v;
        double r230895 = r230894 * r230894;
        double r230896 = r230893 * r230895;
        double r230897 = r230892 - r230896;
        double r230898 = sqrt(r230897);
        double r230899 = -r230894;
        double r230900 = fma(r230899, r230894, r230892);
        double r230901 = r230898 * r230900;
        double r230902 = r230891 * r230901;
        return r230902;
}

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. Using strategy rm
  3. Applied associate-*l*0.0

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

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

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

Reproduce

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