Average Error: 1.0 → 0.6
Time: 42.3s
Precision: 64
\[\alpha \gt \left(-1\right) \land \beta \gt \left(-1\right) \land i \gt \left(0\right)\]
\[\frac{\left(\frac{\left(\frac{\left(\frac{\left(\left(\frac{\alpha}{\beta}\right) \cdot \left(\beta - \alpha\right)\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}\]
\[\frac{\frac{\beta - \alpha}{2 \cdot i + \left(\beta + \alpha\right)} \cdot \frac{\beta + \alpha}{\left(2.0 + \left(\beta + \alpha\right)\right) + 2 \cdot i} + 1.0}{2.0}\]
\frac{\left(\frac{\left(\frac{\left(\frac{\left(\left(\frac{\alpha}{\beta}\right) \cdot \left(\beta - \alpha\right)\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}
\frac{\frac{\beta - \alpha}{2 \cdot i + \left(\beta + \alpha\right)} \cdot \frac{\beta + \alpha}{\left(2.0 + \left(\beta + \alpha\right)\right) + 2 \cdot i} + 1.0}{2.0}
double f(double alpha, double beta, double i) {
        double r5209300 = alpha;
        double r5209301 = beta;
        double r5209302 = r5209300 + r5209301;
        double r5209303 = r5209301 - r5209300;
        double r5209304 = r5209302 * r5209303;
        double r5209305 = 2.0;
        double r5209306 = /* ERROR: no posit support in C */;
        double r5209307 = i;
        double r5209308 = r5209306 * r5209307;
        double r5209309 = r5209302 + r5209308;
        double r5209310 = r5209304 / r5209309;
        double r5209311 = 2.0;
        double r5209312 = /* ERROR: no posit support in C */;
        double r5209313 = r5209309 + r5209312;
        double r5209314 = r5209310 / r5209313;
        double r5209315 = 1.0;
        double r5209316 = /* ERROR: no posit support in C */;
        double r5209317 = r5209314 + r5209316;
        double r5209318 = r5209317 / r5209312;
        return r5209318;
}

double f(double alpha, double beta, double i) {
        double r5209319 = beta;
        double r5209320 = alpha;
        double r5209321 = r5209319 - r5209320;
        double r5209322 = 2.0;
        double r5209323 = i;
        double r5209324 = r5209322 * r5209323;
        double r5209325 = r5209319 + r5209320;
        double r5209326 = r5209324 + r5209325;
        double r5209327 = r5209321 / r5209326;
        double r5209328 = 2.0;
        double r5209329 = r5209328 + r5209325;
        double r5209330 = r5209329 + r5209324;
        double r5209331 = r5209325 / r5209330;
        double r5209332 = r5209327 * r5209331;
        double r5209333 = 1.0;
        double r5209334 = r5209332 + r5209333;
        double r5209335 = r5209334 / r5209328;
        return r5209335;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Initial program 1.0

    \[\frac{\left(\frac{\left(\frac{\left(\frac{\left(\left(\frac{\alpha}{\beta}\right) \cdot \left(\beta - \alpha\right)\right)}{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)}{\left(\frac{\left(\frac{\left(\frac{\alpha}{\beta}\right)}{\left(\left(2\right) \cdot i\right)}\right)}{\left(2.0\right)}\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}\]
  2. Simplified1.0

    \[\leadsto \color{blue}{\frac{\left(\frac{\left(\frac{\left(\left(\beta - \alpha\right) \cdot \left(\frac{\beta}{\alpha}\right)\right)}{\left(\left(\frac{\left(\left(2\right) \cdot i\right)}{\left(\frac{\beta}{\alpha}\right)}\right) \cdot \left(\frac{\left(\frac{\left(2.0\right)}{\left(\frac{\beta}{\alpha}\right)}\right)}{\left(\left(2\right) \cdot i\right)}\right)\right)}\right)}{\left(1.0\right)}\right)}{\left(2.0\right)}}\]
  3. Using strategy rm
  4. Applied p16-times-frac0.6

    \[\leadsto \frac{\left(\frac{\color{blue}{\left(\left(\frac{\left(\beta - \alpha\right)}{\left(\frac{\left(\left(2\right) \cdot i\right)}{\left(\frac{\beta}{\alpha}\right)}\right)}\right) \cdot \left(\frac{\left(\frac{\beta}{\alpha}\right)}{\left(\frac{\left(\frac{\left(2.0\right)}{\left(\frac{\beta}{\alpha}\right)}\right)}{\left(\left(2\right) \cdot i\right)}\right)}\right)\right)}}{\left(1.0\right)}\right)}{\left(2.0\right)}\]
  5. Final simplification0.6

    \[\leadsto \frac{\frac{\beta - \alpha}{2 \cdot i + \left(\beta + \alpha\right)} \cdot \frac{\beta + \alpha}{\left(2.0 + \left(\beta + \alpha\right)\right) + 2 \cdot i} + 1.0}{2.0}\]

Reproduce

herbie shell --seed 2019133 +o rules:numerics
(FPCore (alpha beta i)
  :name "Octave 3.8, jcobi/2"
  :pre (and (>.p16 alpha (real->posit16 -1)) (>.p16 beta (real->posit16 -1)) (>.p16 i (real->posit16 0)))
  (/.p16 (+.p16 (/.p16 (/.p16 (*.p16 (+.p16 alpha beta) (-.p16 beta alpha)) (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i))) (+.p16 (+.p16 (+.p16 alpha beta) (*.p16 (real->posit16 2) i)) (real->posit16 2.0))) (real->posit16 1.0)) (real->posit16 2.0)))