Average Error: 25.8 → 25.7
Time: 32.0s
Precision: 64
Internal Precision: 128
\[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
\[\frac{\frac{b \cdot c - a \cdot 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.8
Target0.4
Herbie25.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.8

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

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

    \[\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*25.7

    \[\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. Final simplification25.7

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

Reproduce

herbie shell --seed 2018360 
(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: 29.6s)Debug log

start42.0ms

Algorithm
intervals

setup73.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 27.7b

localize19.0ms

Local error

Found 2 expressions with local error:

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

rewrite10.0ms

Algorithm
rewrite-expression-head
Counts
2 → 43
Calls

2 calls. Slowest were:

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

series93.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

72.0ms
(/ (- (* b c) (* a d)) (+ (* c c) (* d d)))
21.0ms
(+ (* c c) (* d d))

simplify1.6s

Counts
37 → 49
Calls

37 calls. Slowest were:

454.0ms
(+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d))))
343.0ms
(- (pow (* b c) 3) (pow (* a d) 3))
245.0ms
(- (* (* b c) (* b c)) (* (* a d) (* a d)))

prune680.0ms

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 27.3b

localize17.0ms

Local error

Found 4 expressions with local error:

28.0b
(sqrt (+ (* c c) (* d d)))
28.0b
(sqrt (+ (* c c) (* d d)))
16.7b
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
0.1b
(/ (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d))))

rewrite51.0ms

Algorithm
rewrite-expression-head
Counts
4 → 264
Calls

4 calls. Slowest were:

20.0ms
(/ (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d))))
19.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
4.0ms
(sqrt (+ (* c c) (* d d)))

series253.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

104.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
97.0ms
(/ (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d))))
32.0ms
(sqrt (+ (* c c) (* d d)))
20.0ms
(sqrt (+ (* c c) (* d d)))

simplify19.5s

Counts
400 → 276
Calls

400 calls. Slowest were:

521.0ms
(/ (* (* (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))) (* (* (sqrt (+ (* c c) (* d d))) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d)))))
439.0ms
(sqrt (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d)))))
340.0ms
(/ (sqrt (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d))))) (cbrt (sqrt (+ (* c c) (* d d)))))

prune3.0s

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 24.2b

localize10.0ms

Local error

Found 4 expressions with local error:

28.0b
(sqrt (+ (* c c) (* d d)))
28.0b
(sqrt (+ (* c c) (* d d)))
16.7b
(/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d)))
0.2b
(/ 1 (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d))))

rewrite16.0ms

Algorithm
rewrite-expression-head
Counts
4 → 110
Calls

4 calls. Slowest were:

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

series150.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

63.0ms
(/ 1 (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d))))
50.0ms
(/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d)))
18.0ms
(sqrt (+ (* c c) (* d d)))
18.0ms
(sqrt (+ (* c c) (* d d)))

simplify1.2s

Counts
100 → 122
Calls

100 calls. Slowest were:

116.0ms
(/ (* (* (sqrt (+ (* c c) (* d d))) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d)))) (* (* (- (* b c) (* a d)) (- (* b c) (* a d))) (- (* b c) (* a d))))
106.0ms
(sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d))))
94.0ms
(sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d))))

prune1.2s

Pruning

9 alts after pruning (7 fresh and 2 done)

Merged error: 24.2b

localize6.0ms

Local error

Found 2 expressions with local error:

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

rewrite10.0ms

Algorithm
rewrite-expression-head
Counts
2 → 43
Calls

2 calls. Slowest were:

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

series71.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

56.0ms
(/ (- (* b c) (* a d)) (+ (* d d) (* c c)))
15.0ms
(+ (* d d) (* c c))

simplify1.0s

Counts
37 → 49
Calls

37 calls. Slowest were:

315.0ms
(+ (* (* d d) (* d d)) (- (* (* c c) (* c c)) (* (* d d) (* c c))))
186.0ms
(- (pow (* b c) 3) (pow (* a d) 3))
167.0ms
(- (* (* b c) (* b c)) (* (* a d) (* a d)))

prune377.0ms

Pruning

9 alts after pruning (6 fresh and 3 done)

Merged error: 24.2b

regimes219.0ms

Accuracy

0% (2.5b remaining)

Error of 25.7b against oracle of 23.2b and baseline of 25.7b

bsearch1.0ms