Average Error: 0.0 → 0.0
Time: 15.6s
Precision: 64
Internal Precision: 128
\[x.re \cdot y.re - x.im \cdot y.im\]
\[x.re \cdot y.re - x.im \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.re - x.im \cdot y.im\]
  2. Final simplification0.0

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

Reproduce

herbie shell --seed 2019016 
(FPCore (x.re x.im y.re y.im)
  :name "_multiplyComplex, real part"
  (- (* x.re y.re) (* x.im y.im)))

Details

Time bar (total: 15.2s)Debug log

sample55.0ms

Algorithm
intervals
Results
324×(pre true 80)
324×(body real 80)

simplify12.0ms

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

prune16.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.0b

localize10.0ms

Local error

Found 1 expressions with local error:

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

rewrite2.0ms

Algorithm
rewrite-expression-head
Rules
add-log-exp
flip--
add-cube-cbrt
add-exp-log
diff-log
add-cbrt-cube
flip3--
*-un-lft-identity
sub-neg
pow1
add-sqr-sqrt
Counts
1 → 12
Calls
1 calls:
Slowest
2.0ms
(- (* x.re y.re) (* x.im y.im))

series34.0ms

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

simplify28.0ms

Counts
4 → 15
Calls
4 calls:
Slowest
17.0ms
(/ (exp (* x.re y.re)) (exp (* x.im y.im)))
5.0ms
(- (* y.re x.re) (* y.im x.im))
5.0ms
(- (* y.re x.re) (* y.im x.im))
0.0ms
0

prune145.0ms

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0.0b

localize6.0ms

Local error

Found 4 expressions with local error:

0.6b
(sqrt (- (* x.re y.re) (* x.im y.im)))
0.6b
(sqrt (- (* x.re y.re) (* x.im y.im)))
0.3b
(* (sqrt (- (* x.re y.re) (* x.im y.im))) (sqrt (- (* x.re y.re) (* x.im y.im))))
0.0b
(- (* x.re y.re) (* x.im y.im))

rewrite15.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
diff-log
sqrt-unprod
pow-plus
rem-square-sqrt
sub-neg
pow2
Counts
4 → 78
Calls
4 calls:
Slowest
9.0ms
(* (sqrt (- (* x.re y.re) (* x.im y.im))) (sqrt (- (* x.re y.re) (* x.im y.im))))
2.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))
2.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))
2.0ms
(- (* x.re y.re) (* x.im y.im))

series217.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
77.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))
56.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))
48.0ms
(* (sqrt (- (* x.re y.re) (* x.im y.im))) (sqrt (- (* x.re y.re) (* x.im y.im))))
36.0ms
(- (* x.re y.re) (* x.im y.im))

simplify4.7s

Counts
60 → 90
Calls
60 calls:
Slowest
452.0ms
(* (sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))) (sqrt (- (* x.re y.re) (* x.im y.im))))
409.0ms
(* (- (* x.re y.re) (* x.im y.im)) (- (* x.re y.re) (* x.im y.im)))
384.0ms
(* (sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))) (sqrt (- (* (* x.re y.re) (* x.re y.re)) (* (* x.im y.im) (* x.im y.im)))))
367.0ms
(* (sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))) (sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))))
361.0ms
(sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)))

prune1.1s

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0b

localize10.0ms

Local error

Found 4 expressions with local error:

0.6b
(sqrt (- (* x.re y.re) (* x.im y.im)))
0.6b
(sqrt (- (* x.re y.re) (* x.im y.im)))
0.6b
(sqrt (- (* x.re y.re) (* x.im y.im)))
0.2b
(* (sqrt (sqrt (- (* x.re y.re) (* x.im y.im)))) (sqrt (- (* x.re y.re) (* x.im y.im))))

rewrite23.0ms

Algorithm
rewrite-expression-head
Rules
24×sqrt-div
22×sqrt-prod
17×add-sqr-sqrt
12×add-cube-cbrt
12×*-un-lft-identity
flip--
associate-*l*
flip3--
pow1/2
pow1
add-exp-log
associate-*r*
add-cbrt-cube
add-log-exp
frac-times
rem-sqrt-square
associate-*r/
associate-*l/
pow-prod-down
cube-unmult
cbrt-unprod
pow-prod-up
*-commutative
prod-exp
sqrt-unprod
pow-plus
Counts
4 → 82
Calls
4 calls:
Slowest
15.0ms
(* (sqrt (sqrt (- (* x.re y.re) (* x.im y.im)))) (sqrt (- (* x.re y.re) (* x.im y.im))))
2.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))
2.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))
2.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))

series403.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
176.0ms
(* (sqrt (sqrt (- (* x.re y.re) (* x.im y.im)))) (sqrt (- (* x.re y.re) (* x.im y.im))))
87.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))
70.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))
69.0ms
(sqrt (- (* x.re y.re) (* x.im y.im)))

simplify5.4s

Counts
64 → 94
Calls
64 calls:
Slowest
479.0ms
(* (sqrt (sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)))) (sqrt (- (* x.re y.re) (* x.im y.im))))
447.0ms
(* (sqrt (sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)))) (sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))))
442.0ms
(sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)))
402.0ms
(sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)))
355.0ms
(sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)))

prune1.2s

Pruning

2 alts after pruning (0 fresh and 2 done)

Merged error: 0b

regimes326.0ms

Accuracy

0% (0.0b remaining)

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

bsearch2.0ms

end0.0ms

sample1.6s

Algorithm
intervals
Results
10465×(pre true 80)
10465×(body real 80)