\[(x * y + z)_* - \left(1 + \left(x \cdot y + z\right)\right)\]
Test:
simple fma test
Bits:
128 bits
Bits error versus x
Bits error versus y
Bits error versus z
Time: 7.6 s
Input Error: 44.8
Output Error: 45.1
Log:
Profile: 🕒
\(\left((x * y + z)_* - \left(1 + \frac{{\left(x \cdot y\right)}^2}{x \cdot y - z}\right)\right) + \frac{{z}^2}{x \cdot y - z}\)
  1. Started with
    \[(x * y + z)_* - \left(1 + \left(x \cdot y + z\right)\right)\]
    44.8
  2. Using strategy rm
    44.8
  3. Applied flip-+ to get
    \[(x * y + z)_* - \left(1 + \color{red}{\left(x \cdot y + z\right)}\right) \leadsto (x * y + z)_* - \left(1 + \color{blue}{\frac{{\left(x \cdot y\right)}^2 - {z}^2}{x \cdot y - z}}\right)\]
    45.1
  4. Using strategy rm
    45.1
  5. Applied div-sub to get
    \[(x * y + z)_* - \left(1 + \color{red}{\frac{{\left(x \cdot y\right)}^2 - {z}^2}{x \cdot y - z}}\right) \leadsto (x * y + z)_* - \left(1 + \color{blue}{\left(\frac{{\left(x \cdot y\right)}^2}{x \cdot y - z} - \frac{{z}^2}{x \cdot y - z}\right)}\right)\]
    45.1
  6. Applied associate-+r- to get
    \[(x * y + z)_* - \color{red}{\left(1 + \left(\frac{{\left(x \cdot y\right)}^2}{x \cdot y - z} - \frac{{z}^2}{x \cdot y - z}\right)\right)} \leadsto (x * y + z)_* - \color{blue}{\left(\left(1 + \frac{{\left(x \cdot y\right)}^2}{x \cdot y - z}\right) - \frac{{z}^2}{x \cdot y - z}\right)}\]
    45.1
  7. Applied associate--r- to get
    \[\color{red}{(x * y + z)_* - \left(\left(1 + \frac{{\left(x \cdot y\right)}^2}{x \cdot y - z}\right) - \frac{{z}^2}{x \cdot y - z}\right)} \leadsto \color{blue}{\left((x * y + z)_* - \left(1 + \frac{{\left(x \cdot y\right)}^2}{x \cdot y - z}\right)\right) + \frac{{z}^2}{x \cdot y - z}}\]
    45.1

Original test:


(lambda ((x default) (y default) (z default))
  #:name "simple fma test"
  (- (fma x y z) (+ 1 (+ (* x y) z)))
  #:target
  -1)