Average Error: 25.0 → 21.7
Time: 13.7s
Precision: 64
Internal Precision: 128
\[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
\[\frac{\frac{b}{\frac{\sqrt{c \cdot c + d \cdot d}}{c}} - a \cdot \frac{d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}\]

Error

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus d

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original25.0
Target0.5
Herbie21.7
\[\begin{array}{l} \mathbf{if}\;\left|d\right| \lt \left|c\right|:\\ \;\;\;\;\frac{b - a \cdot \frac{d}{c}}{c + d \cdot \frac{d}{c}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(-a\right) + b \cdot \frac{c}{d}}{d + c \cdot \frac{c}{d}}\\ \end{array}\]

Derivation

  1. Initial program 25.0

    \[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
  2. Initial simplification25.0

    \[\leadsto \frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt25.0

    \[\leadsto \frac{b \cdot c - a \cdot d}{\color{blue}{\sqrt{c \cdot c + d \cdot d} \cdot \sqrt{c \cdot c + d \cdot d}}}\]
  5. Applied associate-/r*24.9

    \[\leadsto \color{blue}{\frac{\frac{b \cdot c - a \cdot d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}}\]
  6. Using strategy rm
  7. Applied div-sub25.0

    \[\leadsto \frac{\color{blue}{\frac{b \cdot c}{\sqrt{c \cdot c + d \cdot d}} - \frac{a \cdot d}{\sqrt{c \cdot c + d \cdot d}}}}{\sqrt{c \cdot c + d \cdot d}}\]
  8. Using strategy rm
  9. Applied associate-/l*23.5

    \[\leadsto \frac{\color{blue}{\frac{b}{\frac{\sqrt{c \cdot c + d \cdot d}}{c}}} - \frac{a \cdot d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}\]
  10. Using strategy rm
  11. Applied *-un-lft-identity23.5

    \[\leadsto \frac{\frac{b}{\frac{\sqrt{c \cdot c + d \cdot d}}{c}} - \frac{a \cdot d}{\sqrt{\color{blue}{1 \cdot \left(c \cdot c + d \cdot d\right)}}}}{\sqrt{c \cdot c + d \cdot d}}\]
  12. Applied sqrt-prod23.5

    \[\leadsto \frac{\frac{b}{\frac{\sqrt{c \cdot c + d \cdot d}}{c}} - \frac{a \cdot d}{\color{blue}{\sqrt{1} \cdot \sqrt{c \cdot c + d \cdot d}}}}{\sqrt{c \cdot c + d \cdot d}}\]
  13. Applied times-frac21.7

    \[\leadsto \frac{\frac{b}{\frac{\sqrt{c \cdot c + d \cdot d}}{c}} - \color{blue}{\frac{a}{\sqrt{1}} \cdot \frac{d}{\sqrt{c \cdot c + d \cdot d}}}}{\sqrt{c \cdot c + d \cdot d}}\]
  14. Simplified21.7

    \[\leadsto \frac{\frac{b}{\frac{\sqrt{c \cdot c + d \cdot d}}{c}} - \color{blue}{a} \cdot \frac{d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}\]
  15. Final simplification21.7

    \[\leadsto \frac{\frac{b}{\frac{\sqrt{c \cdot c + d \cdot d}}{c}} - a \cdot \frac{d}{\sqrt{c \cdot c + d \cdot d}}}{\sqrt{c \cdot c + d \cdot d}}\]

Reproduce

herbie shell --seed 2018362 
(FPCore (a b c d)
  :name "Complex division, imag part"

  :herbie-target
  (if (< (fabs d) (fabs c)) (/ (- b (* a (/ d c))) (+ c (* d (/ d c)))) (/ (+ (- a) (* b (/ c d))) (+ d (* c (/ c d)))))

  (/ (- (* b c) (* a d)) (+ (* c c) (* d d))))

Details

Time bar (total: 11.1s)Debug log

start73.0ms

Algorithm
intervals

setup96.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 22.7b

localize32.0ms

Local error

Found 3 expressions with local error:

22.7b
(/ (- (* b c) (* a d)) (+ (* c c) (* d d)))
0.5b
(- (* b c) (* a d))
0.0b
(+ (* c c) (* d d))

rewrite11.0ms

Algorithm
rewrite-expression-head
Counts
3 → 55
Calls

3 calls. Slowest were:

7.0ms
(/ (- (* b c) (* a d)) (+ (* c c) (* d d)))
2.0ms
(+ (* c c) (* d d))
2.0ms
(- (* b c) (* a d))

series107.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

60.0ms
(/ (- (* b c) (* a d)) (+ (* c c) (* d d)))
27.0ms
(- (* b c) (* a d))
20.0ms
(+ (* c c) (* d d))

simplify1.3s

Counts
41 → 64
Calls

41 calls. Slowest were:

309.0ms
(- (pow (* b c) 3) (pow (* a d) 3))
213.0ms
(- (* (* b c) (* b c)) (* (* a d) (* a d)))
201.0ms
(+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d))))

prune693.0ms

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 22.3b

localize15.0ms

Local error

Found 4 expressions with local error:

28.3b
(sqrt (+ (* c c) (* d d)))
28.3b
(sqrt (+ (* c c) (* d d)))
15.1b
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
0.5b
(- (* b c) (* a d))

rewrite24.0ms

Algorithm
rewrite-expression-head
Counts
4 → 84
Calls

4 calls. Slowest were:

12.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
3.0ms
(- (* b c) (* a d))
3.0ms
(sqrt (+ (* c c) (* d d)))

series224.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

114.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
44.0ms
(- (* b c) (* a d))
33.0ms
(sqrt (+ (* c c) (* d d)))
33.0ms
(sqrt (+ (* c c) (* d d)))

simplify2.0s

Counts
76 → 96
Calls

76 calls. Slowest were:

320.0ms
(- (pow (* b c) 3) (pow (* a d) 3))
179.0ms
(- (* (* b c) (* b c)) (* (* a d) (* a d)))
159.0ms
(sqrt (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d)))))

prune899.0ms

Pruning

14 alts after pruning (14 fresh and 0 done)

Merged error: 20.1b

localize18.0ms

Local error

Found 4 expressions with local error:

28.3b
(sqrt (+ (* c c) (* d d)))
28.3b
(sqrt (+ (* c c) (* d d)))
28.3b
(sqrt (+ (* c c) (* d d)))
9.9b
(/ (* b c) (sqrt (+ (* c c) (* d d))))

rewrite24.0ms

Algorithm
rewrite-expression-head
Counts
4 → 69
Calls

4 calls. Slowest were:

8.0ms
(/ (* b c) (sqrt (+ (* c c) (* d d))))
7.0ms
(sqrt (+ (* c c) (* d d)))
4.0ms
(sqrt (+ (* c c) (* d d)))

series130.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

51.0ms
(/ (* b c) (sqrt (+ (* c c) (* d d))))
29.0ms
(sqrt (+ (* c c) (* d d)))
28.0ms
(sqrt (+ (* c c) (* d d)))
21.0ms
(sqrt (+ (* c c) (* d d)))

simplify1.6s

Counts
52 → 81
Calls

52 calls. Slowest were:

581.0ms
(/ (* (* (* b c) (* b c)) (* b c)) (* (* (sqrt (+ (* c c) (* d d))) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d)))))
184.0ms
(sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d))))
168.0ms
(sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d))))

prune930.0ms

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 19.7b

localize12.0ms

Local error

Found 4 expressions with local error:

28.3b
(sqrt (+ (* c c) (* d d)))
28.3b
(sqrt (+ (* c c) (* d d)))
28.3b
(sqrt (+ (* c c) (* d d)))
9.5b
(/ (* a d) (sqrt (+ (* c c) (* d d))))

rewrite13.0ms

Algorithm
rewrite-expression-head
Counts
4 → 69
Calls

4 calls. Slowest were:

7.0ms
(/ (* a d) (sqrt (+ (* c c) (* d d))))
2.0ms
(sqrt (+ (* c c) (* d d)))
2.0ms
(sqrt (+ (* c c) (* d d)))

series120.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

37.0ms
(/ (* a d) (sqrt (+ (* c c) (* d d))))
32.0ms
(sqrt (+ (* c c) (* d d)))
30.0ms
(sqrt (+ (* c c) (* d d)))
20.0ms
(sqrt (+ (* c c) (* d d)))

simplify1.4s

Counts
52 → 81
Calls

52 calls. Slowest were:

519.0ms
(/ (* (* (* a d) (* a d)) (* a d)) (* (* (sqrt (+ (* c c) (* d d))) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d)))))
150.0ms
(sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d))))
138.0ms
(sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d))))

prune953.0ms

Pruning

11 alts after pruning (11 fresh and 0 done)

Merged error: 19.2b

regimes501.0ms

Accuracy

0% (0.4b remaining)

Error of 21.7b against oracle of 21.3b and baseline of 21.7b

bsearch3.0ms