Average Error: 0.1 → 0.1
Time: 20.1s
Precision: 64
\[0 \lt m \land 0 \lt v \land v \lt 0.25\]
\[\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 - m\right)\]
\[\mathsf{fma}\left(\sqrt{m}, \frac{\left(1 - m\right) \cdot m}{v} - 1, \frac{\left(1 - m\right) \cdot m}{v} - 1\right) \cdot \left(-\sqrt{m}\right) + \mathsf{fma}\left(\sqrt{m}, \frac{\left(1 - m\right) \cdot m}{v} - 1, \frac{\left(1 - m\right) \cdot m}{v} - 1\right)\]
\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 - m\right)
\mathsf{fma}\left(\sqrt{m}, \frac{\left(1 - m\right) \cdot m}{v} - 1, \frac{\left(1 - m\right) \cdot m}{v} - 1\right) \cdot \left(-\sqrt{m}\right) + \mathsf{fma}\left(\sqrt{m}, \frac{\left(1 - m\right) \cdot m}{v} - 1, \frac{\left(1 - m\right) \cdot m}{v} - 1\right)
double f(double m, double v) {
        double r678697 = m;
        double r678698 = 1.0;
        double r678699 = r678698 - r678697;
        double r678700 = r678697 * r678699;
        double r678701 = v;
        double r678702 = r678700 / r678701;
        double r678703 = r678702 - r678698;
        double r678704 = r678703 * r678699;
        return r678704;
}

double f(double m, double v) {
        double r678705 = m;
        double r678706 = sqrt(r678705);
        double r678707 = 1.0;
        double r678708 = r678707 - r678705;
        double r678709 = r678708 * r678705;
        double r678710 = v;
        double r678711 = r678709 / r678710;
        double r678712 = r678711 - r678707;
        double r678713 = fma(r678706, r678712, r678712);
        double r678714 = -r678706;
        double r678715 = r678713 * r678714;
        double r678716 = r678715 + r678713;
        return r678716;
}

Error

Bits error versus m

Bits error versus v

Derivation

  1. Initial program 0.1

    \[\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 - m\right)\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt0.1

    \[\leadsto \left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 - \color{blue}{\sqrt{m} \cdot \sqrt{m}}\right)\]
  4. Applied *-un-lft-identity0.1

    \[\leadsto \left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(\color{blue}{1 \cdot 1} - \sqrt{m} \cdot \sqrt{m}\right)\]
  5. Applied difference-of-squares0.1

    \[\leadsto \left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \color{blue}{\left(\left(1 + \sqrt{m}\right) \cdot \left(1 - \sqrt{m}\right)\right)}\]
  6. Applied associate-*r*0.1

    \[\leadsto \color{blue}{\left(\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 + \sqrt{m}\right)\right) \cdot \left(1 - \sqrt{m}\right)}\]
  7. Simplified0.1

    \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt{m}, \frac{m \cdot \left(1 - m\right)}{v} - 1, \frac{m \cdot \left(1 - m\right)}{v} - 1\right)} \cdot \left(1 - \sqrt{m}\right)\]
  8. Using strategy rm
  9. Applied sub-neg0.1

    \[\leadsto \mathsf{fma}\left(\sqrt{m}, \frac{m \cdot \left(1 - m\right)}{v} - 1, \frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \color{blue}{\left(1 + \left(-\sqrt{m}\right)\right)}\]
  10. Applied distribute-lft-in0.1

    \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt{m}, \frac{m \cdot \left(1 - m\right)}{v} - 1, \frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot 1 + \mathsf{fma}\left(\sqrt{m}, \frac{m \cdot \left(1 - m\right)}{v} - 1, \frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(-\sqrt{m}\right)}\]
  11. Final simplification0.1

    \[\leadsto \mathsf{fma}\left(\sqrt{m}, \frac{\left(1 - m\right) \cdot m}{v} - 1, \frac{\left(1 - m\right) \cdot m}{v} - 1\right) \cdot \left(-\sqrt{m}\right) + \mathsf{fma}\left(\sqrt{m}, \frac{\left(1 - m\right) \cdot m}{v} - 1, \frac{\left(1 - m\right) \cdot m}{v} - 1\right)\]

Reproduce

herbie shell --seed 2019152 +o rules:numerics
(FPCore (m v)
  :name "b parameter of renormalized beta distribution"
  :pre (and (< 0 m) (< 0 v) (< v 0.25))
  (* (- (/ (* m (- 1 m)) v) 1) (- 1 m)))