Average Error: 0.0 → 0.0
Time: 22.2s
Precision: 64
Internal Precision: 128
\[x.re \cdot y.im + x.im \cdot y.re\]
\[x.im \cdot y.re + x.re \cdot y.im\]

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.0

    \[x.re \cdot y.im + x.im \cdot y.re\]
  2. Final simplification0.0

    \[\leadsto x.im \cdot y.re + x.re \cdot y.im\]

Reproduce

herbie shell --seed 2019010 
(FPCore (x.re x.im y.re y.im)
  :name "_multiplyComplex, imaginary part"
  (+ (* x.re y.im) (* x.im y.re)))

Details

Time bar (total: 21.7s)Debug log

sample77.0ms

Algorithm
intervals

simplify5.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
5.0ms
(+ (* x.re y.im) (* x.im y.re))

prune10.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.0b

localize20.0ms

Local error

Found 1 expressions with local error:

0.0b
(+ (* x.re y.im) (* x.im y.re))

rewrite5.0ms

Algorithm
rewrite-expression-head
Rules
add-log-exp
flip-+
add-cube-cbrt
add-exp-log
add-cbrt-cube
flip3-+
*-un-lft-identity
sum-log
+-commutative
pow1
add-sqr-sqrt
Counts
1 → 11
Calls
1 calls:
Slowest
4.0ms
(+ (* x.re y.im) (* x.im y.re))

series31.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
31.0ms
(+ (* x.re y.im) (* x.im y.re))

simplify12.0ms

Counts
4 → 14
Calls
4 calls:
Slowest
6.0ms
(* (exp (* x.re y.im)) (exp (* x.im y.re)))
3.0ms
(+ (* y.re x.im) (* y.im x.re))
3.0ms
(+ (* y.re x.im) (* y.im x.re))
0.0ms
0

prune161.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0b

localize11.0ms

Local error

Found 4 expressions with local error:

1.5b
(sqrt (+ (* x.re y.im) (* x.im y.re)))
1.5b
(sqrt (+ (* x.re y.im) (* x.im y.re)))
0.2b
(* (sqrt (+ (* x.re y.im) (* x.im y.re))) (sqrt (+ (* x.re y.im) (* x.im y.re))))
0.0b
(+ (* x.re y.im) (* x.im y.re))

rewrite27.0ms

Algorithm
rewrite-expression-head
Rules
16×sqrt-div
12×sqrt-prod
12×add-sqr-sqrt
10×add-cube-cbrt
10×*-un-lft-identity
flip-+
flip3-+
pow1
add-log-exp
add-exp-log
associate-*l*
associate-*r*
pow1/2
add-cbrt-cube
frac-times
pow-prod-up
associate-*r/
associate-*l/
pow-prod-down
rem-sqrt-square
cbrt-unprod
*-commutative
prod-exp
sqrt-unprod
pow-plus
rem-square-sqrt
sum-log
+-commutative
pow2
Counts
4 → 77
Calls
4 calls:
Slowest
15.0ms
(* (sqrt (+ (* x.re y.im) (* x.im y.re))) (sqrt (+ (* x.re y.im) (* x.im y.re))))
4.0ms
(+ (* x.re y.im) (* x.im y.re))
3.0ms
(sqrt (+ (* x.re y.im) (* x.im y.re)))
3.0ms
(sqrt (+ (* x.re y.im) (* x.im y.re)))

series196.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
68.0ms
(sqrt (+ (* x.re y.im) (* x.im y.re)))
57.0ms
(sqrt (+ (* x.re y.im) (* x.im y.re)))
42.0ms
(+ (* x.re y.im) (* x.im y.re))
29.0ms
(* (sqrt (+ (* x.re y.im) (* x.im y.re))) (sqrt (+ (* x.re y.im) (* x.im y.re))))

simplify4.5s

Counts
60 → 89
Calls
60 calls:
Slowest
420.0ms
(* (sqrt (- (* x.re y.im) (* x.im y.re))) (sqrt (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))))
410.0ms
(sqrt (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))))
375.0ms
(* (sqrt (- (* (* x.re y.im) (* x.re y.im)) (* (* x.im y.re) (* x.im y.re)))) (sqrt (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3))))
373.0ms
(* (sqrt (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))) (sqrt (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))))
364.0ms
(* (sqrt (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))) (sqrt (- (* x.re y.im) (* x.im y.re))))

prune1.1s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0b

localize36.0ms

Local error

Found 4 expressions with local error:

39.0b
(/ (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3)) (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))))
4.9b
(* (* x.re y.im) (* x.im y.re))
1.2b
(+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3))
0.7b
(- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))

rewrite73.0ms

Algorithm
rewrite-expression-head
Rules
24×*-un-lft-identity
15×times-frac
14×add-cube-cbrt
14×add-sqr-sqrt
add-log-exp
add-exp-log
add-cbrt-cube
pow1
associate-/l*
distribute-lft-out
sum-cubes
flip-+
flip3-+
associate-/r*
associate-/l/
associate-/r/
flip--
div-inv
cbrt-unprod
*-commutative
prod-exp
pow-prod-down
associate-*l*
associate-*r*
div-exp
diff-log
distribute-rgt-out--
flip3--
frac-2neg
sub-neg
sum-log
clear-num
+-commutative
cbrt-undiv
Counts
4 → 78
Calls
4 calls:
Slowest
44.0ms
(/ (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3)) (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))))
12.0ms
(- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))
8.0ms
(+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3))
7.0ms
(* (* x.re y.im) (* x.im y.re))

series415.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
167.0ms
(+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3))
154.0ms
(/ (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3)) (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))))
48.0ms
(* (* x.re y.im) (* x.im y.re))
47.0ms
(- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))

simplify12.3s

Counts
64 → 90
Calls
64 calls:
Slowest
654.0ms
(* (* (* (* x.re y.im) (* x.re y.im)) (* x.re y.im)) (* (* (* x.im y.re) (* x.im y.re)) (* x.im y.re)))
652.0ms
(/ (* (* (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3)) (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3))) (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3))) (* (* (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))) (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))) (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))))
438.0ms
(/ (+ (* x.re y.im) (* x.im y.re)) (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))))
425.0ms
(/ (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))) 1)
403.0ms
(+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))

prune1.1s

Pruning

3 alts after pruning (0 fresh and 3 done)

Merged error: 0b

regimes391.0ms

Accuracy

0% (0.0b remaining)

Error of 0.0b against oracle of 0.0b and baseline of 0.0b

bsearch1.0ms

end0.0ms

sample1.2s

Algorithm
intervals