Average Error: 25.8 → 25.7
Time: 32.2s
Precision: 64
Internal Precision: 128
\[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
\[\frac{\frac{1}{\frac{\sqrt{c \cdot c + d \cdot d}}{c \cdot b - d \cdot a}}}{\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.5
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. Using strategy rm
  3. 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}}}\]
  4. 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}}}\]
  5. Using strategy rm
  6. Applied clear-num25.7

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

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

Reproduce

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

sample42.0ms

Algorithm
intervals

simplify55.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
55.0ms
(/ (- (* b c) (* a d)) (+ (* c c) (* d d)))

prune12.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 24.4b

localize42.0ms

Local error

Found 3 expressions with local error:

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

rewrite13.0ms

Algorithm
rewrite-expression-head
Rules
11×add-cube-cbrt
11×*-un-lft-identity
11×add-sqr-sqrt
times-frac
add-log-exp
add-exp-log
add-cbrt-cube
associate-/l*
associate-/r*
pow1
associate-/l/
flip--
flip-+
associate-/r/
flip3--
flip3-+
div-inv
div-exp
div-sub
diff-log
frac-2neg
sub-neg
sum-log
clear-num
+-commutative
cbrt-undiv
Counts
3 → 55
Calls
3 calls:
Slowest
7.0ms
(/ (- (* b c) (* a d)) (+ (* c c) (* d d)))
3.0ms
(+ (* c c) (* d d))
2.0ms
(- (* b c) (* a d))

series152.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
92.0ms
(/ (- (* b c) (* a d)) (+ (* c c) (* d d)))
45.0ms
(- (* b c) (* a d))
15.0ms
(+ (* c c) (* d d))

simplify1.3s

Counts
41 → 64
Calls
41 calls:
Slowest
279.0ms
(- (* (* b c) (* b c)) (* (* a d) (* a d)))
234.0ms
(- (pow (* b c) 3) (pow (* a d) 3))
174.0ms
(+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d))))
95.0ms
(/ (* (* (- (* b c) (* a d)) (- (* b c) (* a d))) (- (* b c) (* a d))) (* (* (+ (* c c) (* d d)) (+ (* c c) (* d d))) (+ (* c c) (* d d))))
72.0ms
(/ (- (* b c) (* a d)) (cbrt (+ (* c c) (* d d))))

prune796.0ms

Pruning

10 alts after pruning (10 fresh and 0 done)

Merged error: 24.0b

localize12.0ms

Local error

Found 4 expressions with local error:

31.8b
(sqrt (+ (* c c) (* d d)))
31.8b
(sqrt (+ (* c c) (* d d)))
14.4b
(/ (- (* 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))))

rewrite41.0ms

Algorithm
rewrite-expression-head
Rules
288×times-frac
164×add-sqr-sqrt
162×add-cube-cbrt
162×*-un-lft-identity
156×sqrt-prod
27×associate-/l*
22×sqrt-div
18×associate-/r/
12×associate-/r*
11×flip-+
11×add-exp-log
11×add-cbrt-cube
11×flip3-+
div-inv
add-log-exp
div-exp
cbrt-undiv
pow1
associate-/l/
div-sub
pow1/2
frac-2neg
clear-num
rem-sqrt-square
flip--
flip3--
Counts
4 → 264
Calls
4 calls:
Slowest
21.0ms
(/ (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d))))
7.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
2.0ms
(sqrt (+ (* c c) (* d d)))
2.0ms
(sqrt (+ (* c c) (* d d)))

series226.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
105.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
68.0ms
(/ (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d))))
28.0ms
(sqrt (+ (* c c) (* d d)))
24.0ms
(sqrt (+ (* c c) (* d d)))

simplify17.4s

Counts
400 → 276
Calls
400 calls:
Slowest
406.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)))))
244.0ms
(/ (/ (* (cbrt (- (* b c) (* a d))) (cbrt (- (* b c) (* a d)))) (* (cbrt (sqrt (+ (* c c) (* d d)))) (cbrt (sqrt (+ (* c c) (* d d)))))) 1)
241.0ms
(- (pow (* b c) 3) (pow (* a d) 3))
226.0ms
(/ (/ (* (cbrt (- (* b c) (* a d))) (cbrt (- (* b c) (* a d)))) (* (cbrt (sqrt (+ (* c c) (* d d)))) (cbrt (sqrt (+ (* c c) (* d d)))))) (sqrt 1))
211.0ms
(- (* (* b c) (* b c)) (* (* a d) (* a d)))

prune2.7s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 21.8b

localize9.0ms

Local error

Found 4 expressions with local error:

31.8b
(sqrt (+ (* c c) (* d d)))
31.8b
(sqrt (+ (* c c) (* d d)))
14.5b
(/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d)))
0.2b
(/ 1 (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d))))

rewrite20.0ms

Algorithm
rewrite-expression-head
Rules
36×times-frac
36×add-sqr-sqrt
34×add-cube-cbrt
34×*-un-lft-identity
27×sqrt-prod
27×associate-/r*
add-exp-log
associate-/l*
sqrt-div
add-cbrt-cube
associate-/r/
pow1
add-log-exp
div-inv
flip-+
flip3-+
associate-/l/
flip--
div-exp
pow1/2
flip3--
frac-2neg
clear-num
rec-exp
rem-sqrt-square
inv-pow
pow-flip
cbrt-undiv
Counts
4 → 110
Calls
4 calls:
Slowest
11.0ms
(/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d)))
3.0ms
(/ 1 (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d))))
2.0ms
(sqrt (+ (* c c) (* d d)))
2.0ms
(sqrt (+ (* c c) (* d d)))

series151.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
64.0ms
(/ 1 (/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d))))
50.0ms
(/ (sqrt (+ (* c c) (* d d))) (- (* b c) (* a d)))
19.0ms
(sqrt (+ (* c c) (* d d)))
18.0ms
(sqrt (+ (* c c) (* d d)))

simplify1.3s

Counts
100 → 122
Calls
100 calls:
Slowest
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))))
108.0ms
(sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d))))
88.0ms
(+ (* (* b c) (* b c)) (+ (* (* a d) (* a d)) (* (* b c) (* a d))))
87.0ms
(+ (* (* b c) (* b c)) (+ (* (* a d) (* a d)) (* (* b c) (* a d))))
87.0ms
(sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d))))

prune1.1s

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 21.8b

localize13.0ms

Local error

Found 4 expressions with local error:

31.8b
(sqrt (+ (* c c) (* d d)))
31.8b
(sqrt (+ (* c c) (* d d)))
14.4b
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
0.2b
(* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))))

rewrite34.0ms

Algorithm
rewrite-expression-head
Rules
37×add-sqr-sqrt
36×times-frac
35×add-cube-cbrt
35×*-un-lft-identity
27×sqrt-prod
24×associate-*r*
16×add-exp-log
11×add-cbrt-cube
10×sqrt-div
associate-/r/
associate-*l*
associate-/r*
pow1
flip-+
flip3-+
add-log-exp
prod-exp
associate-/l*
div-inv
div-exp
associate-/l/
cbrt-unprod
pow1/2
rec-exp
rem-sqrt-square
cbrt-undiv
flip--
*-commutative
associate-*r/
associate-*l/
pow-prod-down
div-sub
flip3--
frac-2neg
clear-num
frac-times
Counts
4 → 120
Calls
4 calls:
Slowest
11.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
10.0ms
(* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))))
8.0ms
(sqrt (+ (* c c) (* d d)))
4.0ms
(sqrt (+ (* c c) (* d d)))

series178.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
71.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
70.0ms
(* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))))
19.0ms
(sqrt (+ (* c c) (* d d)))
18.0ms
(sqrt (+ (* c c) (* d d)))

simplify2.9s

Counts
114 → 132
Calls
114 calls:
Slowest
203.0ms
(* 1 (/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d)))))
192.0ms
(- (pow (* b c) 3) (pow (* a d) 3))
188.0ms
(- (* (* b c) (* b c)) (* (* a d) (* a d)))
140.0ms
(/ (* (* (- (* b c) (* a d)) (- (* b c) (* a d))) (- (* b c) (* a d))) (* (* (sqrt (+ (* c c) (* d d))) (sqrt (+ (* c c) (* d d)))) (sqrt (+ (* c c) (* d d)))))
109.0ms
(sqrt (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d)))))

prune1.2s

Pruning

9 alts after pruning (7 fresh and 2 done)

Merged error: 21.8b

regimes239.0ms

Accuracy

0% (2.6b remaining)

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

bsearch2.0ms

end0.0ms

sample1.3s

Algorithm
intervals