\[\left(d1 \cdot 10 + d1 \cdot d2\right) + d1 \cdot 20\]
Test:
FastMath test2
Bits:
128 bits
Bits error versus d1
Bits error versus d2
Time: 3.9 s
Input Error: 0.2
Output Error: 0.0
Log:
Profile: 🕒
\(d1 \cdot \left(d2 + 30\right)\)
  1. Started with
    \[\left(d1 \cdot 10 + d1 \cdot d2\right) + d1 \cdot 20\]
    0.2
  2. Applied simplify to get
    \[\color{red}{\left(d1 \cdot 10 + d1 \cdot d2\right) + d1 \cdot 20} \leadsto \color{blue}{d1 \cdot \left(\left(10 + d2\right) + 20\right)}\]
    0.0
  3. Applied taylor to get
    \[d1 \cdot \left(\left(10 + d2\right) + 20\right) \leadsto 30 \cdot d1 + d1 \cdot d2\]
    0.1
  4. Taylor expanded around 0 to get
    \[\color{red}{30 \cdot d1 + d1 \cdot d2} \leadsto \color{blue}{30 \cdot d1 + d1 \cdot d2}\]
    0.1
  5. Applied simplify to get
    \[\color{red}{30 \cdot d1 + d1 \cdot d2} \leadsto \color{blue}{d1 \cdot \left(d2 + 30\right)}\]
    0.0

Original test:


(lambda ((d1 default) (d2 default))
  #:name "FastMath test2"
  (+ (+ (* d1 10) (* d1 d2)) (* d1 20))
  #:target
  (* d1 (+ 30 d2)))