Average Error: 25.5 → 0.8
Time: 1.5m
Precision: 64
Internal Precision: 576
\[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
\[\frac{1}{\sqrt{y.im^2 + y.re^2}^*} \cdot (\left(\frac{x.im}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) \cdot \left(\frac{y.re}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) + \left(\left(-x.re\right) \cdot \frac{y.im}{\sqrt{y.im^2 + y.re^2}^*}\right))_*\]

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Derivation

  1. Initial program 25.5

    \[\frac{x.im \cdot y.re - x.re \cdot y.im}{y.re \cdot y.re + y.im \cdot y.im}\]
  2. Initial simplification25.5

    \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{(y.im \cdot y.im + \left(y.re \cdot y.re\right))_*}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt25.5

    \[\leadsto \frac{x.im \cdot y.re - x.re \cdot y.im}{\color{blue}{\sqrt{(y.im \cdot y.im + \left(y.re \cdot y.re\right))_*} \cdot \sqrt{(y.im \cdot y.im + \left(y.re \cdot y.re\right))_*}}}\]
  5. Applied *-un-lft-identity25.5

    \[\leadsto \frac{\color{blue}{1 \cdot \left(x.im \cdot y.re - x.re \cdot y.im\right)}}{\sqrt{(y.im \cdot y.im + \left(y.re \cdot y.re\right))_*} \cdot \sqrt{(y.im \cdot y.im + \left(y.re \cdot y.re\right))_*}}\]
  6. Applied times-frac25.5

    \[\leadsto \color{blue}{\frac{1}{\sqrt{(y.im \cdot y.im + \left(y.re \cdot y.re\right))_*}} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{(y.im \cdot y.im + \left(y.re \cdot y.re\right))_*}}}\]
  7. Simplified25.5

    \[\leadsto \color{blue}{\frac{1}{\sqrt{y.im^2 + y.re^2}^*}} \cdot \frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{(y.im \cdot y.im + \left(y.re \cdot y.re\right))_*}}\]
  8. Simplified16.3

    \[\leadsto \frac{1}{\sqrt{y.im^2 + y.re^2}^*} \cdot \color{blue}{\frac{x.im \cdot y.re - x.re \cdot y.im}{\sqrt{y.im^2 + y.re^2}^*}}\]
  9. Using strategy rm
  10. Applied div-sub16.3

    \[\leadsto \frac{1}{\sqrt{y.im^2 + y.re^2}^*} \cdot \color{blue}{\left(\frac{x.im \cdot y.re}{\sqrt{y.im^2 + y.re^2}^*} - \frac{x.re \cdot y.im}{\sqrt{y.im^2 + y.re^2}^*}\right)}\]
  11. Using strategy rm
  12. Applied *-un-lft-identity16.3

    \[\leadsto \frac{1}{\sqrt{y.im^2 + y.re^2}^*} \cdot \left(\frac{x.im \cdot y.re}{\sqrt{y.im^2 + y.re^2}^*} - \frac{x.re \cdot y.im}{\color{blue}{1 \cdot \sqrt{y.im^2 + y.re^2}^*}}\right)\]
  13. Applied times-frac9.0

    \[\leadsto \frac{1}{\sqrt{y.im^2 + y.re^2}^*} \cdot \left(\frac{x.im \cdot y.re}{\sqrt{y.im^2 + y.re^2}^*} - \color{blue}{\frac{x.re}{1} \cdot \frac{y.im}{\sqrt{y.im^2 + y.re^2}^*}}\right)\]
  14. Applied add-sqr-sqrt9.1

    \[\leadsto \frac{1}{\sqrt{y.im^2 + y.re^2}^*} \cdot \left(\frac{x.im \cdot y.re}{\color{blue}{\sqrt{\sqrt{y.im^2 + y.re^2}^*} \cdot \sqrt{\sqrt{y.im^2 + y.re^2}^*}}} - \frac{x.re}{1} \cdot \frac{y.im}{\sqrt{y.im^2 + y.re^2}^*}\right)\]
  15. Applied times-frac0.8

    \[\leadsto \frac{1}{\sqrt{y.im^2 + y.re^2}^*} \cdot \left(\color{blue}{\frac{x.im}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}} \cdot \frac{y.re}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}} - \frac{x.re}{1} \cdot \frac{y.im}{\sqrt{y.im^2 + y.re^2}^*}\right)\]
  16. Applied prod-diff0.8

    \[\leadsto \frac{1}{\sqrt{y.im^2 + y.re^2}^*} \cdot \color{blue}{\left((\left(\frac{x.im}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) \cdot \left(\frac{y.re}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) + \left(-\frac{y.im}{\sqrt{y.im^2 + y.re^2}^*} \cdot \frac{x.re}{1}\right))_* + (\left(-\frac{y.im}{\sqrt{y.im^2 + y.re^2}^*}\right) \cdot \left(\frac{x.re}{1}\right) + \left(\frac{y.im}{\sqrt{y.im^2 + y.re^2}^*} \cdot \frac{x.re}{1}\right))_*\right)}\]
  17. Applied distribute-rgt-in0.8

    \[\leadsto \color{blue}{(\left(\frac{x.im}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) \cdot \left(\frac{y.re}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) + \left(-\frac{y.im}{\sqrt{y.im^2 + y.re^2}^*} \cdot \frac{x.re}{1}\right))_* \cdot \frac{1}{\sqrt{y.im^2 + y.re^2}^*} + (\left(-\frac{y.im}{\sqrt{y.im^2 + y.re^2}^*}\right) \cdot \left(\frac{x.re}{1}\right) + \left(\frac{y.im}{\sqrt{y.im^2 + y.re^2}^*} \cdot \frac{x.re}{1}\right))_* \cdot \frac{1}{\sqrt{y.im^2 + y.re^2}^*}}\]
  18. Simplified0.8

    \[\leadsto (\left(\frac{x.im}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) \cdot \left(\frac{y.re}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) + \left(-\frac{y.im}{\sqrt{y.im^2 + y.re^2}^*} \cdot \frac{x.re}{1}\right))_* \cdot \frac{1}{\sqrt{y.im^2 + y.re^2}^*} + \color{blue}{0}\]
  19. Final simplification0.8

    \[\leadsto \frac{1}{\sqrt{y.im^2 + y.re^2}^*} \cdot (\left(\frac{x.im}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) \cdot \left(\frac{y.re}{\sqrt{\sqrt{y.im^2 + y.re^2}^*}}\right) + \left(\left(-x.re\right) \cdot \frac{y.im}{\sqrt{y.im^2 + y.re^2}^*}\right))_*\]

Runtime

Time bar (total: 1.5m)Debug logProfile

BaselineHerbieOracleSpan%
Regimes0.80.80.00.80%
herbie shell --seed 2018263 +o rules:numerics
(FPCore (x.re x.im y.re y.im)
  :name "_divideComplex, imaginary part"
  (/ (- (* x.im y.re) (* x.re y.im)) (+ (* y.re y.re) (* y.im y.im))))