Average Error: 0.2 → 0.4
Time: 49.8s
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 m\]
\[m \cdot (\left(\frac{m}{\sqrt{v}}\right) \cdot \left(\frac{1 - m}{\sqrt{v}}\right) + -1)_*\]
\left(\frac{m \cdot \left(1 - m\right)}{v} - 1\right) \cdot m
m \cdot (\left(\frac{m}{\sqrt{v}}\right) \cdot \left(\frac{1 - m}{\sqrt{v}}\right) + -1)_*
double f(double m, double v) {
        double r1975490 = m;
        double r1975491 = 1.0;
        double r1975492 = r1975491 - r1975490;
        double r1975493 = r1975490 * r1975492;
        double r1975494 = v;
        double r1975495 = r1975493 / r1975494;
        double r1975496 = r1975495 - r1975491;
        double r1975497 = r1975496 * r1975490;
        return r1975497;
}

double f(double m, double v) {
        double r1975498 = m;
        double r1975499 = v;
        double r1975500 = sqrt(r1975499);
        double r1975501 = r1975498 / r1975500;
        double r1975502 = 1.0;
        double r1975503 = r1975502 - r1975498;
        double r1975504 = r1975503 / r1975500;
        double r1975505 = -1.0;
        double r1975506 = fma(r1975501, r1975504, r1975505);
        double r1975507 = r1975498 * r1975506;
        return r1975507;
}

Error

Bits error versus m

Bits error versus v

Derivation

  1. Initial program 0.2

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

    \[\leadsto \left(\frac{m \cdot \left(1 - m\right)}{\color{blue}{\sqrt{v} \cdot \sqrt{v}}} - 1\right) \cdot m\]
  4. Applied times-frac0.4

    \[\leadsto \left(\color{blue}{\frac{m}{\sqrt{v}} \cdot \frac{1 - m}{\sqrt{v}}} - 1\right) \cdot m\]
  5. Applied fma-neg0.4

    \[\leadsto \color{blue}{(\left(\frac{m}{\sqrt{v}}\right) \cdot \left(\frac{1 - m}{\sqrt{v}}\right) + \left(-1\right))_*} \cdot m\]
  6. Final simplification0.4

    \[\leadsto m \cdot (\left(\frac{m}{\sqrt{v}}\right) \cdot \left(\frac{1 - m}{\sqrt{v}}\right) + -1)_*\]

Reproduce

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