Average Error: 0.0 → 0.0
Time: 25.8s
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 2019018 
(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: 25.2s)Debug log

sample42.0ms

Algorithm
intervals
Results
25.0ms338×body80valid

simplify6.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

localize19.0ms

Local error

Found 1 expressions with local error:

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

rewrite4.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))

series41.0ms

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

simplify37.0ms

Counts
4 → 14
Calls
4 calls:
Slowest
25.0ms
(* (exp (* x.re y.im)) (exp (* x.im y.re)))
5.0ms
(+ (* y.re x.im) (* y.im x.re))
5.0ms
(+ (* y.re x.im) (* y.im x.re))
1.0ms
0

prune177.0ms

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0.0b

localize26.0ms

Local error

Found 4 expressions with local error:

32.1b
(/ (+ (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)))))
5.4b
(* (* x.re y.im) (* x.im y.re))
1.4b
(- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))
1.0b
(+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))

rewrite42.0ms

Algorithm
rewrite-expression-head
Rules
22×*-un-lft-identity
15×times-frac
14×add-cube-cbrt
14×add-sqr-sqrt
11×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/
diff-log
sub-neg
sum-log
associate-+r+
flip--
div-inv
cbrt-unprod
*-commutative
prod-exp
pow-prod-down
associate-*l*
associate-*r*
div-exp
distribute-rgt-out--
flip3--
frac-2neg
associate-+r-
clear-num
+-commutative
cbrt-undiv
Counts
4 → 80
Calls
4 calls:
Slowest
24.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)))))
9.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))))
5.0ms
(- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))
3.0ms
(* (* x.re y.im) (* x.im y.re))

series312.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
119.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)))))
83.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))))
70.0ms
(- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))
40.0ms
(* (* x.re y.im) (* x.im y.re))

simplify12.6s

Counts
65 → 92
Calls
65 calls:
Slowest
782.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)
651.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)))
440.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))))
417.0ms
(/ (+ (* x.re y.im) (* x.im y.re)) (cbrt (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))))
405.0ms
(/ 1 (* (cbrt (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))) (cbrt (+ (* (* 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.2s

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0.0b

localize15.0ms

Local error

Found 4 expressions with local error:

32.1b
(* (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3)) (/ 1 (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))))
5.4b
(* (* x.re y.im) (* x.im y.re))
1.4b
(- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))
1.0b
(+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))

rewrite65.0ms

Algorithm
rewrite-expression-head
Rules
11×add-log-exp
10×add-exp-log
add-cbrt-cube
*-un-lft-identity
pow1
associate-*r*
add-cube-cbrt
associate-*l*
add-sqr-sqrt
flip-+
flip3-+
prod-exp
cbrt-unprod
*-commutative
associate-/r/
associate-*l/
pow-prod-down
diff-log
sub-neg
sum-log
associate-+r+
frac-times
distribute-lft-out
flip--
div-inv
sum-cubes
un-div-inv
associate-*r/
distribute-rgt-out--
flip3--
associate-+r-
rec-exp
+-commutative
Counts
4 → 70
Calls
4 calls:
Slowest
23.0ms
(* (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3)) (/ 1 (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))))
19.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))))
15.0ms
(- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))
7.0ms
(* (* x.re y.im) (* x.im y.re))

series322.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
155.0ms
(* (+ (pow (* x.re y.im) 3) (pow (* x.im y.re) 3)) (/ 1 (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re))))))
71.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))))
55.0ms
(- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))
42.0ms
(* (* x.re y.im) (* x.im y.re))

simplify7.9s

Counts
44 → 82
Calls
44 calls:
Slowest
590.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)))
420.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))))
397.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))))
392.0ms
(/ 1 (+ (* (* x.re y.im) (* x.re y.im)) (- (* (* x.im y.re) (* x.im y.re)) (* (* x.re y.im) (* x.im y.re)))))
359.0ms
(cbrt (/ 1 (+ (* (* 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.2s

Pruning

2 alts after pruning (0 fresh and 2 done)

Merged error: 0.0b

regimes251.0ms

Accuracy

0% (0.0b remaining)

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

bsearch2.0ms

end0.0ms

sample889.0ms

Algorithm
intervals
Results
691.0ms10453×body80valid