\[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\]
Test:
Octave 3.8, jcobi/1
Bits:
128 bits
Bits error versus alpha
Bits error versus beta
Time: 10.4 s
Input Error: 6.9
Output Error: 6.3
Log:
Profile: 🕒
\(\frac{\left(\frac{\beta}{(1 * \left(\beta + \alpha\right) + 2.0)_*} + 1.0\right) - \alpha \cdot \frac{1}{(1 * \left(\beta + \alpha\right) + 2.0)_*}}{2.0}\)
  1. Started with
    \[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\]
    6.9
  2. Using strategy rm
    6.9
  3. Applied *-un-lft-identity to get
    \[\frac{\frac{\beta - \alpha}{\color{red}{\left(\alpha + \beta\right)} + 2.0} + 1.0}{2.0} \leadsto \frac{\frac{\beta - \alpha}{\color{blue}{1 \cdot \left(\alpha + \beta\right)} + 2.0} + 1.0}{2.0}\]
    6.9
  4. Applied fma-def to get
    \[\frac{\frac{\beta - \alpha}{\color{red}{1 \cdot \left(\alpha + \beta\right) + 2.0}} + 1.0}{2.0} \leadsto \frac{\frac{\beta - \alpha}{\color{blue}{(1 * \left(\alpha + \beta\right) + 2.0)_*}} + 1.0}{2.0}\]
    6.5
  5. Applied taylor to get
    \[\frac{\frac{\beta - \alpha}{(1 * \left(\alpha + \beta\right) + 2.0)_*} + 1.0}{2.0} \leadsto \frac{\left(\frac{\beta}{(1 * \left(\beta + \alpha\right) + 2.0)_*} + 1.0\right) - \frac{\alpha}{(1 * \left(\beta + \alpha\right) + 2.0)_*}}{2.0}\]
    6.4
  6. Taylor expanded around 0 to get
    \[\frac{\color{red}{\left(\frac{\beta}{(1 * \left(\beta + \alpha\right) + 2.0)_*} + 1.0\right) - \frac{\alpha}{(1 * \left(\beta + \alpha\right) + 2.0)_*}}}{2.0} \leadsto \frac{\color{blue}{\left(\frac{\beta}{(1 * \left(\beta + \alpha\right) + 2.0)_*} + 1.0\right) - \frac{\alpha}{(1 * \left(\beta + \alpha\right) + 2.0)_*}}}{2.0}\]
    6.4
  7. Using strategy rm
    6.4
  8. Applied div-inv to get
    \[\frac{\left(\frac{\beta}{(1 * \left(\beta + \alpha\right) + 2.0)_*} + 1.0\right) - \color{red}{\frac{\alpha}{(1 * \left(\beta + \alpha\right) + 2.0)_*}}}{2.0} \leadsto \frac{\left(\frac{\beta}{(1 * \left(\beta + \alpha\right) + 2.0)_*} + 1.0\right) - \color{blue}{\alpha \cdot \frac{1}{(1 * \left(\beta + \alpha\right) + 2.0)_*}}}{2.0}\]
    6.3

  9. Removed slow pow expressions

Original test:


(lambda ((alpha default) (beta default))
  #:name "Octave 3.8, jcobi/1"
  (/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0) 2.0))