Average Error: 0.1 → 0.1
Time: 1.1m
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)\]
\[\left(\left(\frac{m}{v} - 1\right) + \left(\mathsf{fma}\left(\left(\frac{m}{v}\right), \left(-m\right), \left(\frac{m}{v}\right)\right) - 1\right) \cdot \left(-m\right)\right) + m \cdot \frac{-m}{v}\]
\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot \left(1 - m\right)
\left(\left(\frac{m}{v} - 1\right) + \left(\mathsf{fma}\left(\left(\frac{m}{v}\right), \left(-m\right), \left(\frac{m}{v}\right)\right) - 1\right) \cdot \left(-m\right)\right) + m \cdot \frac{-m}{v}
double f(double m, double v) {
        double r3485884 = m;
        double r3485885 = 1.0;
        double r3485886 = r3485885 - r3485884;
        double r3485887 = r3485884 * r3485886;
        double r3485888 = v;
        double r3485889 = r3485887 / r3485888;
        double r3485890 = r3485889 - r3485885;
        double r3485891 = r3485890 * r3485886;
        return r3485891;
}

double f(double m, double v) {
        double r3485892 = m;
        double r3485893 = v;
        double r3485894 = r3485892 / r3485893;
        double r3485895 = 1.0;
        double r3485896 = r3485894 - r3485895;
        double r3485897 = -r3485892;
        double r3485898 = fma(r3485894, r3485897, r3485894);
        double r3485899 = r3485898 - r3485895;
        double r3485900 = r3485899 * r3485897;
        double r3485901 = r3485896 + r3485900;
        double r3485902 = r3485897 / r3485893;
        double r3485903 = r3485892 * r3485902;
        double r3485904 = r3485901 + r3485903;
        return r3485904;
}

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. Taylor expanded around 0 0.1

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

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

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

    \[\leadsto \color{blue}{1 \cdot \left(\mathsf{fma}\left(\left(\frac{m}{v}\right), \left(-m\right), \left(\frac{m}{v}\right)\right) - 1\right) + \left(-m\right) \cdot \left(\mathsf{fma}\left(\left(\frac{m}{v}\right), \left(-m\right), \left(\frac{m}{v}\right)\right) - 1\right)}\]
  7. Using strategy rm
  8. Applied fma-udef0.1

    \[\leadsto 1 \cdot \left(\color{blue}{\left(\frac{m}{v} \cdot \left(-m\right) + \frac{m}{v}\right)} - 1\right) + \left(-m\right) \cdot \left(\mathsf{fma}\left(\left(\frac{m}{v}\right), \left(-m\right), \left(\frac{m}{v}\right)\right) - 1\right)\]
  9. Applied associate--l+0.1

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

    \[\leadsto \color{blue}{\left(\left(\frac{m}{v} \cdot \left(-m\right)\right) \cdot 1 + \left(\frac{m}{v} - 1\right) \cdot 1\right)} + \left(-m\right) \cdot \left(\mathsf{fma}\left(\left(\frac{m}{v}\right), \left(-m\right), \left(\frac{m}{v}\right)\right) - 1\right)\]
  11. Applied associate-+l+0.1

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

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

Reproduce

herbie shell --seed 2019120 +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)))