Average Error: 26.1 → 26.1
Time: 11.9s
Precision: 64
Internal Precision: 128
\[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
\[\frac{\frac{1}{\sqrt{c \cdot c + d \cdot d}} \cdot \left(b \cdot c - a \cdot d\right)}{\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

Original26.1
Target0.3
Herbie26.1
\[\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 26.1

    \[\frac{b \cdot c - a \cdot d}{c \cdot c + d \cdot d}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt26.1

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

    \[\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 div-inv26.1

    \[\leadsto \frac{\color{blue}{\left(b \cdot c - a \cdot d\right) \cdot \frac{1}{\sqrt{c \cdot c + d \cdot d}}}}{\sqrt{c \cdot c + d \cdot d}}\]
  7. Final simplification26.1

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

Reproduce

herbie shell --seed 2019022 
(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

sample49.0ms

Algorithm
intervals
Results
36.0ms267×body80valid

simplify36.0ms

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

prune7.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 28.1b

localize32.0ms

Local error

Found 3 expressions with local error:

28.1b
(/ (- (* b c) (* a d)) (+ (* c c) (* d d)))
0.2b
(- (* b c) (* a d))
0.0b
(+ (* c c) (* d d))

rewrite17.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
11.0ms
(/ (- (* b c) (* a d)) (+ (* c c) (* d d)))
3.0ms
(- (* b c) (* a d))
3.0ms
(+ (* c c) (* d d))

series138.0ms

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

simplify998.0ms

Counts
41 → 64
Calls
41 calls:
Slowest
200.0ms
(- (pow (* b c) 3) (pow (* a d) 3))
198.0ms
(- (* (* b c) (* b c)) (* (* a d) (* a d)))
122.0ms
(+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d))))
62.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))))
54.0ms
(/ (- (* b c) (* a d)) (cbrt (+ (* c c) (* d d))))

prune676.0ms

Pruning

11 alts after pruning (11 fresh and 0 done)

Merged error: 27.8b

localize10.0ms

Local error

Found 4 expressions with local error:

30.2b
(sqrt (+ (* c c) (* d d)))
30.2b
(sqrt (+ (* c c) (* d d)))
16.5b
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
0.2b
(- (* b c) (* a d))

rewrite14.0ms

Algorithm
rewrite-expression-head
Rules
23×add-sqr-sqrt
21×add-cube-cbrt
21×*-un-lft-identity
18×sqrt-prod
18×times-frac
add-log-exp
add-exp-log
sqrt-div
add-cbrt-cube
associate-/r*
pow1
associate-/l*
flip-+
flip3-+
associate-/l/
flip--
associate-/r/
pow1/2
flip3--
rem-sqrt-square
div-inv
div-exp
div-sub
diff-log
frac-2neg
sub-neg
clear-num
cbrt-undiv
Counts
4 → 84
Calls
4 calls:
Slowest
8.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
2.0ms
(sqrt (+ (* c c) (* d d)))
2.0ms
(- (* b c) (* a d))
2.0ms
(sqrt (+ (* c c) (* d d)))

series149.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
75.0ms
(/ (- (* b c) (* a d)) (sqrt (+ (* c c) (* d d))))
28.0ms
(- (* b c) (* a d))
23.0ms
(sqrt (+ (* c c) (* d d)))
21.0ms
(sqrt (+ (* c c) (* d d)))

simplify1.7s

Counts
76 → 96
Calls
76 calls:
Slowest
273.0ms
(- (pow (* b c) 3) (pow (* a d) 3))
220.0ms
(- (* (* b c) (* b c)) (* (* a d) (* a d)))
143.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)))))
136.0ms
(sqrt (+ (* (* c c) (* c c)) (- (* (* d d) (* d d)) (* (* c c) (* d d)))))
98.0ms
(sqrt (- (* (* c c) (* c c)) (* (* d d) (* d d))))

prune1.1s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 25.4b

localize12.0ms

Local error

Found 4 expressions with local error:

30.2b
(sqrt (+ (* c c) (* d d)))
30.2b
(sqrt (+ (* c c) (* d d)))
16.6b
(* (- (* b c) (* a d)) (/ 1 (sqrt (+ (* c c) (* d d)))))
0.2b
(- (* b c) (* a d))

rewrite21.0ms

Algorithm
rewrite-expression-head
Rules
10×add-sqr-sqrt
add-cube-cbrt
add-exp-log
*-un-lft-identity
add-log-exp
sqrt-prod
associate-*r*
sqrt-div
add-cbrt-cube
pow1
flip--
flip-+
associate-*l*
flip3--
flip3-+
associate-/r/
prod-exp
associate-*l/
pow1/2
rem-sqrt-square
frac-times
div-inv
cbrt-unprod
*-commutative
un-div-inv
associate-*r/
pow-prod-down
diff-log
sub-neg
rec-exp
Counts
4 → 67
Calls
4 calls:
Slowest
10.0ms
(* (- (* b c) (* a d)) (/ 1 (sqrt (+ (* c c) (* d d)))))
3.0ms
(sqrt (+ (* c c) (* d d)))
3.0ms
(- (* b c) (* a d))
3.0ms
(sqrt (+ (* c c) (* d d)))

series178.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
96.0ms
(* (- (* b c) (* a d)) (/ 1 (sqrt (+ (* c c) (* d d)))))
31.0ms
(- (* b c) (* a d))
29.0ms
(sqrt (+ (* c c) (* d d)))
22.0ms
(sqrt (+ (* c c) (* d d)))

simplify2.2s

Counts
45 → 79
Calls
45 calls:
Slowest
365.0ms
(* (- (* (* b c) (* b c)) (* (* a d) (* a d))) 1)
294.0ms
(* (+ (* (* b c) (* b c)) (+ (* (* a d) (* a d)) (* (* b c) (* a d)))) (sqrt (+ (* c c) (* d d))))
285.0ms
(* (* (* (- (* b c) (* a d)) (- (* b c) (* a d))) (- (* b c) (* a d))) (* (* (/ 1 (sqrt (+ (* c c) (* d d)))) (/ 1 (sqrt (+ (* c c) (* d d))))) (/ 1 (sqrt (+ (* c c) (* d d))))))
175.0ms
(* (- (* b c) (* a d)) (/ 1 (sqrt (+ (* c c) (* d d)))))
170.0ms
(* (- (pow (* b c) 3) (pow (* a d) 3)) 1)

prune677.0ms

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 25.4b

localize5.0ms

Local error

Found 4 expressions with local error:

27.9b
(/ (+ (* c c) (* d d)) (- (* b c) (* a d)))
0.5b
(/ 1 (/ (+ (* c c) (* d d)) (- (* b c) (* a d))))
0.2b
(- (* b c) (* a d))
0.0b
(+ (* c c) (* d d))

rewrite17.0ms

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

series147.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
68.0ms
(/ 1 (/ (+ (* c c) (* d d)) (- (* b c) (* a d))))
39.0ms
(/ (+ (* c c) (* d d)) (- (* b c) (* a d)))
26.0ms
(- (* b c) (* a d))
14.0ms
(+ (* c c) (* d d))

simplify663.0ms

Counts
60 → 96
Calls
60 calls:
Slowest
82.0ms
(+ (* (* b c) (* b c)) (+ (* (* a d) (* a d)) (* (* b c) (* a d))))
81.0ms
(+ (* (* b c) (* b c)) (+ (* (* a d) (* a d)) (* (* b c) (* a d))))
80.0ms
(- (* (* c c) (* c c)) (* (* d d) (* d d)))
58.0ms
(/ (* (* (+ (* c c) (* d d)) (+ (* c c) (* d d))) (+ (* c c) (* d d))) (* (* (- (* b c) (* a d)) (- (* b c) (* a d))) (- (* b c) (* a d))))
22.0ms
(/ (* (cbrt (+ (* c c) (* d d))) (cbrt (+ (* c c) (* d d)))) (* (cbrt (- (* b c) (* a d))) (cbrt (- (* b c) (* a d)))))

prune659.0ms

Pruning

10 alts after pruning (8 fresh and 2 done)

Merged error: 25.4b

regimes298.0ms

Accuracy

0% (2.6b remaining)

Error of 26.1b against oracle of 23.4b and baseline of 26.1b

bsearch2.0ms

end0.0ms

sample1.2s

Algorithm
intervals
Results
1.1s8441×body80valid