Average Error: 0.0 → 0.0
Time: 7.8s
Precision: 64
Internal Precision: 128
\[x.re \cdot y.re - x.im \cdot y.im\]
\[(x.re \cdot y.re + \left(y.im \cdot \left(-x.im\right)\right))_*\]

Error

Bits error versus x.re

Bits error versus x.im

Bits error versus y.re

Bits error versus y.im

Derivation

  1. Initial program 0.0

    \[x.re \cdot y.re - x.im \cdot y.im\]
  2. Using strategy rm
  3. Applied fma-neg0.0

    \[\leadsto \color{blue}{(x.re \cdot y.re + \left(-x.im \cdot y.im\right))_*}\]
  4. Final simplification0.0

    \[\leadsto (x.re \cdot y.re + \left(y.im \cdot \left(-x.im\right)\right))_*\]

Reproduce

herbie shell --seed 2019007 +o rules:numerics
(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: 7.4s)Debug log

sample51.0ms

Algorithm
intervals

simplify9.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

9.0ms
(- (* x.re y.re) (* x.im y.im))

prune15.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
Counts
1 → 16
Calls

1 calls. Slowest were:

2.0ms
(- (* x.re y.re) (* x.im y.im))

series27.0ms

Counts
1 → 3
Calls

1 calls. Slowest were:

27.0ms
(- (* x.re y.re) (* x.im y.im))

simplify72.0ms

Counts
6 → 19
Calls

6 calls. Slowest were:

30.0ms
(/ (exp (* x.re y.re)) (exp (* x.im y.im)))
16.0ms
(- (* y.re x.re) (* y.im x.im))
9.0ms
(- (* y.re x.re) (* y.im x.im))

prune130.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0b

localize6.0ms

Local error

Found 1 expressions with local error:

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

rewrite0.0ms

Algorithm
rewrite-expression-head
Counts
1 → 10
Calls

1 calls. Slowest were:

0.0ms
(fma x.re y.re (- (* x.im y.im)))

series48.0ms

Counts
1 → 3
Calls

1 calls. Slowest were:

48.0ms
(fma x.re y.re (- (* x.im y.im)))

simplify39.0ms

Counts
3 → 13
Calls

3 calls. Slowest were:

21.0ms
(- (* y.re x.re) (* y.im x.im))
17.0ms
(- (* y.re x.re) (* y.im x.im))
1.0ms
0

prune157.0ms

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0b

localize18.0ms

Local error

Found 4 expressions with local error:

1.3b
(cbrt (fma x.re y.re (- (* x.im y.im))))
1.3b
(cbrt (fma x.re y.re (- (* x.im y.im))))
1.3b
(cbrt (fma x.re y.re (- (* x.im y.im))))
0.5b
(* (cbrt (fma x.re y.re (- (* x.im y.im)))) (cbrt (fma x.re y.re (- (* x.im y.im)))))

rewrite9.0ms

Algorithm
rewrite-expression-head
Counts
4 → 69
Calls

4 calls. Slowest were:

5.0ms
(* (cbrt (fma x.re y.re (- (* x.im y.im)))) (cbrt (fma x.re y.re (- (* x.im y.im)))))
1.0ms
(cbrt (fma x.re y.re (- (* x.im y.im))))
1.0ms
(cbrt (fma x.re y.re (- (* x.im y.im))))

series544.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

168.0ms
(* (cbrt (fma x.re y.re (- (* x.im y.im)))) (cbrt (fma x.re y.re (- (* x.im y.im)))))
136.0ms
(cbrt (fma x.re y.re (- (* x.im y.im))))
127.0ms
(cbrt (fma x.re y.re (- (* x.im y.im))))
112.0ms
(cbrt (fma x.re y.re (- (* x.im y.im))))

simplify3.3s

Counts
41 → 81
Calls

41 calls. Slowest were:

376.0ms
(exp (* -1/3 (+ (* 2 (log (/ -1 y.re))) (* 2 (log (/ -1 x.re))))))
348.0ms
(exp (* -1/3 (+ (log (/ 1 x.re)) (log (/ 1 y.re)))))
342.0ms
(exp (* -1/3 (+ (log (/ 1 x.re)) (log (/ 1 y.re)))))

prune1.1s

Pruning

2 alts after pruning (0 fresh and 2 done)

Merged error: 0b

regimes178.0ms

Accuracy

0% (0.0b remaining)

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

bsearch3.0ms

end0.0ms

sample1.8s

Algorithm
intervals