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

sample22.0ms

Algorithm
intervals
Results
13.0ms315×body80valid

simplify5.0ms

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

prune10.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.0b

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

series27.0ms

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

simplify436.0ms

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

prune119.0ms

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0.0b

localize52.0ms

Local error

Found 4 expressions with local error:

36.5b
(/ (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)) (+ (* (* x.re y.re) (* x.re y.re)) (+ (* (* x.im y.im) (* x.im y.im)) (* (* x.re y.re) (* x.im y.im)))))
3.4b
(* (* x.re y.re) (* x.im y.im))
2.1b
(- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))
0.8b
(+ (* (* x.re y.re) (* x.re y.re)) (+ (* (* x.im y.im) (* x.im y.im)) (* (* x.re y.re) (* x.im y.im))))

rewrite45.0ms

Algorithm
rewrite-expression-head
Rules
25×*-un-lft-identity
25×add-sqr-sqrt
18×times-frac
15×add-cube-cbrt
11×add-log-exp
add-exp-log
add-cbrt-cube
associate-/l*
pow1
difference-of-squares
distribute-lft-out--
difference-cubes
sum-log
associate-/r*
associate-/l/
flip--
flip-+
associate-/r/
flip3--
flip3-+
div-inv
cbrt-unprod
*-commutative
prod-exp
pow-prod-down
associate-*l*
associate-*r*
div-exp
div-sub
diff-log
frac-2neg
sub-neg
clear-num
associate-+r+
+-commutative
cbrt-undiv
Counts
4 → 85
Calls
4 calls:
Slowest
25.0ms
(/ (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)) (+ (* (* x.re y.re) (* x.re y.re)) (+ (* (* x.im y.im) (* x.im y.im)) (* (* x.re y.re) (* x.im y.im)))))
10.0ms
(+ (* (* x.re y.re) (* x.re y.re)) (+ (* (* x.im y.im) (* x.im y.im)) (* (* x.re y.re) (* x.im y.im))))
4.0ms
(- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))
3.0ms
(* (* x.re y.re) (* x.im y.im))

series400.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
136.0ms
(/ (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)) (+ (* (* x.re y.re) (* x.re y.re)) (+ (* (* x.im y.im) (* x.im y.im)) (* (* x.re y.re) (* x.im y.im)))))
131.0ms
(- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))
93.0ms
(+ (* (* x.re y.re) (* x.re y.re)) (+ (* (* x.im y.im) (* x.im y.im)) (* (* x.re y.re) (* x.im y.im))))
39.0ms
(* (* x.re y.re) (* x.im y.im))

simplify12.5s

Counts
74 → 97
Calls
74 calls:
Slowest
660.0ms
(* (* (* (* x.re y.re) (* x.re y.re)) (* x.re y.re)) (* (* (* x.im y.im) (* x.im y.im)) (* x.im y.im)))
405.0ms
(/ (* (cbrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))) (cbrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)))) 1)
373.0ms
(* (cbrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))) (cbrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))))
359.0ms
(sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3)))
310.0ms
(/ (sqrt (- (pow (* x.re y.re) 3) (pow (* x.im y.im) 3))) 1)

prune1.4s

Pruning

2 alts after pruning (0 fresh and 2 done)

Merged error: 0.0b

regimes299.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.0s

Algorithm
intervals
Results
797.0ms10410×body80valid