Average Error: 45.0 → 45.0
Time: 3.2s
Precision: binary64
\[v1x + \frac{\left(\left(\left(\left(-d\right) - nx \cdot v1x\right) - ny \cdot v1y\right) - nz \cdot v1z\right) \cdot \left(\left(-v1x\right) + v2x\right)}{\left(nx \cdot \left(\left(-v1x\right) + v2x\right) + ny \cdot \left(\left(-v1y\right) + v2y\right)\right) + nz \cdot \left(\left(-v1z\right) + v2z\right)}\]
\[v1x + \frac{\left(\left(\left(\left(-d\right) - nx \cdot v1x\right) - ny \cdot v1y\right) - nz \cdot v1z\right) \cdot \left(\left(-v1x\right) + v2x\right)}{\left(nx \cdot \left(\left(-v1x\right) + v2x\right) + ny \cdot \left(\left(-v1y\right) + v2y\right)\right) + nz \cdot \left(\left(-v1z\right) + v2z\right)}\]

Error

Bits error versus v1x

Bits error versus d

Bits error versus nx

Bits error versus ny

Bits error versus v1y

Bits error versus nz

Bits error versus v1z

Bits error versus v2x

Bits error versus v2y

Bits error versus v2z

Derivation

  1. Initial program 45.0

    \[v1x + \frac{\left(\left(\left(\left(-d\right) - nx \cdot v1x\right) - ny \cdot v1y\right) - nz \cdot v1z\right) \cdot \left(\left(-v1x\right) + v2x\right)}{\left(nx \cdot \left(\left(-v1x\right) + v2x\right) + ny \cdot \left(\left(-v1y\right) + v2y\right)\right) + nz \cdot \left(\left(-v1z\right) + v2z\right)}\]
  2. Final simplification45.0

    \[\leadsto v1x + \frac{\left(\left(\left(\left(-d\right) - nx \cdot v1x\right) - ny \cdot v1y\right) - nz \cdot v1z\right) \cdot \left(\left(-v1x\right) + v2x\right)}{\left(nx \cdot \left(\left(-v1x\right) + v2x\right) + ny \cdot \left(\left(-v1y\right) + v2y\right)\right) + nz \cdot \left(\left(-v1z\right) + v2z\right)}\]

Reproduce

herbie shell --seed 2020153 
(FPCore (v1x d nx ny v1y nz v1z v2x v2y v2z)
  :name "(+ v1x (/ (* (- (- (- (- d) (* nx v1x)) (* ny v1y)) (* nz v1z)) (+ (- v1x) v2x)) (+ (+ (* nx (+ (- v1x) v2x)) (* ny (+ (- v1y) v2y))) (* nz (+ (- v1z) v2z)))))"
  :precision binary64
  (+ v1x (/ (* (- (- (- (neg d) (* nx v1x)) (* ny v1y)) (* nz v1z)) (+ (neg v1x) v2x)) (+ (+ (* nx (+ (neg v1x) v2x)) (* ny (+ (neg v1y) v2y))) (* nz (+ (neg v1z) v2z))))))