Details

Time bar (total: 6.9s)

analyze184.0ms (2.7%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
50%50%50%0.1%0%0%0%5
50%50%50%0.1%0%0%0%6
55.2%50%40.6%0.1%9.4%0%0%7
56.1%50%39%0.1%10.9%0%0%8
59.8%50%33.6%0.1%16.4%0%0%9
60.7%50%32.4%0.1%17.6%0%0%10
62.9%50%29.5%0.1%20.5%0%0%11
63.4%50%28.8%0.1%21.2%0%0%12
Compiler

Compiled 15 to 12 computations (20% saved)

sample4.6s (67.4%)

Results
1.3s2108×body1024valid
1.2s2109×body1024infinite
1.1s5150×body256valid
379.0ms1008×body512infinite
321.0ms993×body512valid
279.0ms1601×body256infinite
6.0msbody2048valid
3.0msbody2048infinite
Bogosity

preprocess88.0ms (1.3%)

Algorithm
egg-herbie
Rules
1384×times-frac
1336×fma-def
864×unswap-sqr
632×associate-/r/
620×associate-*r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02170
15270
214070
326666
436066
548866
684366
7216166
8478766
9540266
10686266
022
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 im)) (+.f64 (exp.f64 (-.f64 0 re)) (exp.f64 re)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (sin.f64 re) (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 (*.f64 1/2 (sin.f64 im)) (+.f64 (exp.f64 (-.f64 0 re)) (exp.f64 re)))
(*.f64 (*.f64 1/2 (sin.f64 im)) (+.f64 (exp.f64 (neg.f64 re)) (exp.f64 re)))
(*.f64 (sin.f64 im) (fma.f64 1/2 (exp.f64 re) (/.f64 1/2 (exp.f64 re))))
Compiler

Compiled 16 to 13 computations (18.8% saved)

simplify91.0ms (1.3%)

Algorithm
egg-herbie
Rules
1568×unswap-sqr
1404×fma-def
900×fabs-mul
862×associate-/r*
692×times-frac
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01435
13035
27435
314133
418933
525633
643833
7110433
8315833
9354033
10403133
11567033
12665033
Stop Event
node limit
Counts
1 → 4
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (sin.f64 re) (*.f64 1/2 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (sin.f64 re) (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))

eval1.0ms (0%)

Compiler

Compiled 47 to 25 computations (46.8% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New314
Fresh101
Picked000
Done000
Total415
Accurracy
100.0%
Counts
5 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 13 to 10 computations (23.1% saved)

localize13.0ms (0.2%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
100.0%
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 35 to 13 computations (62.9% saved)

series6.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
im
@-inf
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.0ms
im
@inf
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.0ms
re
@0
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.0ms
re
@-inf
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
1.0ms
re
@inf
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))

rewrite32.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
282×add-sqr-sqrt
272×pow1
272×*-un-lft-identity
264×add-exp-log
262×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01335
127335
2427735
Stop Event
unsound
Counts
1 → 23
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
(+.f64 (sin.f64 re) (sin.f64 re))
(+.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2))
(-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 re) -2))) 1)
(/.f64 (*.f64 (sin.f64 re) -2) -2)
(/.f64 (*.f64 (sin.f64 re) -2) 1)
(/.f64 (*.f64 (sin.f64 re) -2) (+.f64 (*.f64 (sin.f64 re) -2) (-.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2))))
(/.f64 (-.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2)) (-.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2)))
(pow.f64 (*.f64 (sin.f64 re) -2) -2)
(pow.f64 (*.f64 (sin.f64 re) -2) 1)
(pow.f64 (*.f64 (sin.f64 re) -2) 3)
(pow.f64 (*.f64 (sin.f64 re) -2) 1/3)
(sqrt.f64 (*.f64 (sin.f64 re) -2))
(fabs.f64 (*.f64 (sin.f64 re) -2))
(log.f64 (pow.f64 1 (sin.f64 re)))
(log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 re) -2))))
(cbrt.f64 (*.f64 (sin.f64 re) -2))
(expm1.f64 (log1p.f64 (*.f64 (sin.f64 re) -2)))
(exp.f64 (log.f64 (*.f64 (sin.f64 re) -2)))
(exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 re) -2)) 1))
(exp.f64 (+.f64 (log.f64 (*.f64 (sin.f64 re) -2)) -2))
(log1p.f64 (expm1.f64 (*.f64 (sin.f64 re) -2)))
(fma.f64 1 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2))
(fma.f64 (*.f64 (sin.f64 re) -2) 1 (*.f64 (sin.f64 re) -2))

simplify78.0ms (1.1%)

Algorithm
egg-herbie
Rules
1156×fma-neg
1114×div-sub
812×cancel-sign-sub-inv
740×fma-def
738×associate-*r*
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0981223
12981143
29601143
349691143
Stop Event
node limit
Counts
47 → 47
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))))
(+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 7) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(sin.f64 re)
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4)))))
(+.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/720 (*.f64 (sin.f64 re) (pow.f64 im 6))) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(+.f64 (sin.f64 re) (sin.f64 re))
(+.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2))
(-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 re) -2))) 1)
(/.f64 (*.f64 (sin.f64 re) -2) -2)
(/.f64 (*.f64 (sin.f64 re) -2) 1)
(/.f64 (*.f64 (sin.f64 re) -2) (+.f64 (*.f64 (sin.f64 re) -2) (-.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2))))
(/.f64 (-.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2)) (-.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2)))
(pow.f64 (*.f64 (sin.f64 re) -2) -2)
(pow.f64 (*.f64 (sin.f64 re) -2) 1)
(pow.f64 (*.f64 (sin.f64 re) -2) 3)
(pow.f64 (*.f64 (sin.f64 re) -2) 1/3)
(sqrt.f64 (*.f64 (sin.f64 re) -2))
(fabs.f64 (*.f64 (sin.f64 re) -2))
(log.f64 (pow.f64 1 (sin.f64 re)))
(log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 re) -2))))
(cbrt.f64 (*.f64 (sin.f64 re) -2))
(expm1.f64 (log1p.f64 (*.f64 (sin.f64 re) -2)))
(exp.f64 (log.f64 (*.f64 (sin.f64 re) -2)))
(exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 re) -2)) 1))
(exp.f64 (+.f64 (log.f64 (*.f64 (sin.f64 re) -2)) -2))
(log1p.f64 (expm1.f64 (*.f64 (sin.f64 re) -2)))
(fma.f64 1 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2))
(fma.f64 (*.f64 (sin.f64 re) -2) 1 (*.f64 (sin.f64 re) -2))
Outputs
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))
(fma.f64 -1/12 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 3)) (*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 1/2 re) (*.f64 -1/12 (pow.f64 re 3))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))))
(fma.f64 -1/12 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))) (*.f64 (*.f64 1/240 (pow.f64 re 5)) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))
(fma.f64 -1/12 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 3)) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 1/2 re) (*.f64 1/240 (pow.f64 re 5)))))
(+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 7) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (+.f64 (*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))) (*.f64 1/240 (*.f64 (pow.f64 re 5) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))))))
(fma.f64 -1/10080 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 7)) (fma.f64 -1/12 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (pow.f64 re 3)) (fma.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))) (*.f64 (*.f64 1/240 (pow.f64 re 5)) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))))
(+.f64 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 1/2 re) (*.f64 1/240 (pow.f64 re 5)))) (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (+.f64 (*.f64 -1/10080 (pow.f64 re 7)) (*.f64 -1/12 (pow.f64 re 3)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(sin.f64 re)
(+.f64 (sin.f64 re) (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))))
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
(fma.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))) (sin.f64 re))
(+.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4)))))
(+.f64 (sin.f64 re) (fma.f64 1/2 (*.f64 (sin.f64 re) (*.f64 im im)) (*.f64 (*.f64 1/24 (sin.f64 re)) (pow.f64 im 4))))
(+.f64 (sin.f64 re) (fma.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 4) 1/24))))
(+.f64 (sin.f64 re) (+.f64 (*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2))) (+.f64 (*.f64 1/720 (*.f64 (sin.f64 re) (pow.f64 im 6))) (*.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4))))))
(+.f64 (sin.f64 re) (fma.f64 1/2 (*.f64 (sin.f64 re) (*.f64 im im)) (fma.f64 1/720 (*.f64 (sin.f64 re) (pow.f64 im 6)) (*.f64 (*.f64 1/24 (sin.f64 re)) (pow.f64 im 4)))))
(+.f64 (sin.f64 re) (fma.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))) (fma.f64 1/24 (*.f64 (sin.f64 re) (pow.f64 im 4)) (*.f64 (sin.f64 re) (*.f64 (pow.f64 im 6) 1/720)))))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(*.f64 1/2 (*.f64 (sin.f64 re) (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (sin.f64 re)))
(+.f64 (sin.f64 re) (sin.f64 re))
(sin.f64 re)
(+.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2))
(sin.f64 re)
(-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 re) -2))) 1)
(sin.f64 re)
(/.f64 (*.f64 (sin.f64 re) -2) -2)
(sin.f64 re)
(/.f64 (*.f64 (sin.f64 re) -2) 1)
(sin.f64 re)
(/.f64 (*.f64 (sin.f64 re) -2) (+.f64 (*.f64 (sin.f64 re) -2) (-.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2))))
(sin.f64 re)
(/.f64 (-.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2)) (-.f64 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2)))
(sin.f64 re)
(pow.f64 (*.f64 (sin.f64 re) -2) -2)
(sin.f64 re)
(pow.f64 (*.f64 (sin.f64 re) -2) 1)
(sin.f64 re)
(pow.f64 (*.f64 (sin.f64 re) -2) 3)
(sin.f64 re)
(pow.f64 (*.f64 (sin.f64 re) -2) 1/3)
(cbrt.f64 (*.f64 (sin.f64 re) -2))
(sqrt.f64 (*.f64 (sin.f64 re) -2))
(sin.f64 re)
(fabs.f64 (*.f64 (sin.f64 re) -2))
(sin.f64 re)
(log.f64 (pow.f64 1 (sin.f64 re)))
(sin.f64 re)
(log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 re) -2))))
(sin.f64 re)
(cbrt.f64 (*.f64 (sin.f64 re) -2))
(expm1.f64 (log1p.f64 (*.f64 (sin.f64 re) -2)))
(sin.f64 re)
(exp.f64 (log.f64 (*.f64 (sin.f64 re) -2)))
(sin.f64 re)
(exp.f64 (*.f64 (log.f64 (*.f64 (sin.f64 re) -2)) 1))
(sin.f64 re)
(exp.f64 (+.f64 (log.f64 (*.f64 (sin.f64 re) -2)) -2))
(sin.f64 re)
(log1p.f64 (expm1.f64 (*.f64 (sin.f64 re) -2)))
(sin.f64 re)
(fma.f64 1 (*.f64 (sin.f64 re) -2) (*.f64 (sin.f64 re) -2))
(sin.f64 re)
(fma.f64 (*.f64 (sin.f64 re) -2) 1 (*.f64 (sin.f64 re) -2))
(sin.f64 re)

eval47.0ms (0.7%)

Compiler

Compiled 698 to 345 computations (50.6% saved)

prune9.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New43447
Fresh000
Picked011
Done000
Total43548
Accurracy
100.0%
Counts
48 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
98.8%
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
18.7%
(+.f64 (sin.f64 re) (sin.f64 re))
100.0%
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
52.6%
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
98.4%
(sin.f64 re)
Compiler

Compiled 49 to 34 computations (30.6% saved)

localize3.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

localize11.0ms (0.2%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
100.0%
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
Compiler

Compiled 31 to 12 computations (61.3% saved)

series5.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
im
@-inf
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
1.0ms
re
@0
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
1.0ms
re
@inf
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
1.0ms
im
@inf
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
0.0ms
re
@-inf
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))

rewrite35.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
266×add-sqr-sqrt
254×pow1
254×*-un-lft-identity
250×add-exp-log
248×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01223
125723
2414723
Stop Event
unsound
Counts
1 → 18
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
Outputs
(+.f64 re re)
(-.f64 (exp.f64 (log1p.f64 re)) -2)
(/.f64 re -2)
(/.f64 re (+.f64 re (-.f64 re re)))
(/.f64 (-.f64 re re) (-.f64 re re))
(pow.f64 re -2)
(pow.f64 re 1/3)
(sqrt.f64 re)
(fabs.f64 re)
(log.f64 (exp.f64 re))
(log.f64 (+.f64 -2 (expm1.f64 re)))
(cbrt.f64 re)
re
(expm1.f64 (log1p.f64 re))
(exp.f64 (log.f64 re))
(exp.f64 (*.f64 (log.f64 re) -2))
(log1p.f64 (expm1.f64 re))
(fma.f64 re -2 re)
(fma.f64 -2 re re)

simplify67.0ms (1%)

Algorithm
egg-herbie
Rules
1716×fma-def
1260×associate-*r*
1182×associate-*l*
1098×distribute-lft-in
894×distribute-rgt-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0661244
11481244
23251244
311601244
Stop Event
node limit
Counts
42 → 27
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
re
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 (*.f64 1/24 (*.f64 re (pow.f64 im 4))) (+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2)))))
(+.f64 (*.f64 1/24 (*.f64 re (pow.f64 im 4))) (+.f64 (*.f64 1/720 (*.f64 re (pow.f64 im 6))) (+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re))
(+.f64 re re)
(-.f64 (exp.f64 (log1p.f64 re)) -2)
(/.f64 re -2)
(/.f64 re (+.f64 re (-.f64 re re)))
(/.f64 (-.f64 re re) (-.f64 re re))
(pow.f64 re -2)
(pow.f64 re 1/3)
(sqrt.f64 re)
(fabs.f64 re)
(log.f64 (exp.f64 re))
(log.f64 (+.f64 -2 (expm1.f64 re)))
(cbrt.f64 re)
(expm1.f64 (log1p.f64 re))
(exp.f64 (log.f64 re))
(exp.f64 (*.f64 (log.f64 re) -2))
(log1p.f64 (expm1.f64 re))
(fma.f64 re -2 re)
(fma.f64 -2 re re)
Outputs
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
re
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(+.f64 (*.f64 1/24 (*.f64 re (pow.f64 im 4))) (+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2)))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(+.f64 (*.f64 1/24 (*.f64 re (pow.f64 im 4))) (+.f64 (*.f64 1/720 (*.f64 re (pow.f64 im 6))) (+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(*.f64 1/2 (*.f64 (+.f64 (exp.f64 im) (exp.f64 (*.f64 -1 im))) re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(+.f64 re re)
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(-.f64 (exp.f64 (log1p.f64 re)) -2)
(+.f64 (exp.f64 (log1p.f64 re)) 2)
(+.f64 2 (exp.f64 (log1p.f64 re)))
(/.f64 re -2)
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(/.f64 re (+.f64 re (-.f64 re re)))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(/.f64 (-.f64 re re) (-.f64 re re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(pow.f64 re -2)
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(pow.f64 re 1/3)
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(sqrt.f64 re)
(fabs.f64 re)
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(log.f64 (exp.f64 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(log.f64 (+.f64 -2 (expm1.f64 re)))
(cbrt.f64 re)
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(expm1.f64 (log1p.f64 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(exp.f64 (log.f64 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(exp.f64 (*.f64 (log.f64 re) -2))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(log1p.f64 (expm1.f64 re))
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(fma.f64 re -2 re)
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))
(fma.f64 -2 re re)
(*.f64 1/2 (*.f64 re (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im)))))
(*.f64 (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))) (*.f64 1/2 re))

localize5.0ms (0.1%)

Compiler

Compiled 10 to 4 computations (60% saved)

localize12.0ms (0.2%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
99.8%
(*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im))
Compiler

Compiled 33 to 14 computations (57.6% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
re
@inf
(*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im))
1.0ms
re
@0
(*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im))
1.0ms
re
@-inf
(*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im))
0.0ms
im
@0
(*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im))
0.0ms
im
@inf
(*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im))

rewrite58.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1836×pow1
1682×add-exp-log
1682×log1p-expm1-u
1682×expm1-log1p-u
1644×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01023
120023
2235023
Stop Event
node limit
Counts
1 → 13
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im))
Outputs
(-.f64 (+.f64 1 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))) 1)
(pow.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im))) 1)
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))) 3)
(pow.f64 (pow.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im))) 3) 1/3)
(pow.f64 (*.f64 im (sqrt.f64 (*.f64 1/2 (sin.f64 re)))) 2)
(sqrt.f64 (*.f64 (pow.f64 im 4) (*.f64 (pow.f64 (sin.f64 re) 2) 1/4)))
(log.f64 (pow.f64 (exp.f64 (*.f64 im im)) (*.f64 1/2 (sin.f64 re))))
(cbrt.f64 (pow.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im))) 3))
(cbrt.f64 (*.f64 (pow.f64 (*.f64 1/2 (sin.f64 re)) 3) (pow.f64 (*.f64 im im) 3)))
(cbrt.f64 (*.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 (*.f64 1/2 (sin.f64 re)) 3)))
(expm1.f64 (log1p.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))))
(exp.f64 (log.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))))
(log1p.f64 (expm1.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))))

simplify65.0ms (1%)

Algorithm
egg-herbie
Rules
1446×fma-def
1346×exp-sum
1318×log-prod
820×distribute-rgt-in
800×distribute-lft-in
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
073991
1204963
2736927
32141923
46625923
Stop Event
node limit
Counts
37 → 35
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2)))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 7) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2))))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(-.f64 (+.f64 1 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))) 1)
(pow.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im))) 1)
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))) 3)
(pow.f64 (pow.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im))) 3) 1/3)
(pow.f64 (*.f64 im (sqrt.f64 (*.f64 1/2 (sin.f64 re)))) 2)
(sqrt.f64 (*.f64 (pow.f64 im 4) (*.f64 (pow.f64 (sin.f64 re) 2) 1/4)))
(log.f64 (pow.f64 (exp.f64 (*.f64 im im)) (*.f64 1/2 (sin.f64 re))))
(cbrt.f64 (pow.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im))) 3))
(cbrt.f64 (*.f64 (pow.f64 (*.f64 1/2 (sin.f64 re)) 3) (pow.f64 (*.f64 im im) 3)))
(cbrt.f64 (*.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 (*.f64 1/2 (sin.f64 re)) 3)))
(expm1.f64 (log1p.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))))
(exp.f64 (log.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))))
(log1p.f64 (expm1.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))))
Outputs
(*.f64 1/2 (*.f64 re (pow.f64 im 2)))
(*.f64 (*.f64 1/2 re) (*.f64 im im))
(*.f64 1/2 (*.f64 re (*.f64 im im)))
(*.f64 re (*.f64 im (*.f64 1/2 im)))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(fma.f64 -1/12 (*.f64 (*.f64 im im) (pow.f64 re 3)) (*.f64 (*.f64 1/2 re) (*.f64 im im)))
(*.f64 (*.f64 im im) (+.f64 (*.f64 1/2 re) (*.f64 -1/12 (pow.f64 re 3))))
(*.f64 (*.f64 im im) (fma.f64 1/2 re (*.f64 -1/12 (pow.f64 re 3))))
(*.f64 im (*.f64 im (*.f64 re (fma.f64 -1/12 (*.f64 re re) 1/2))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2)))))
(fma.f64 -1/12 (*.f64 (*.f64 im im) (pow.f64 re 3)) (fma.f64 1/240 (*.f64 (*.f64 im im) (pow.f64 re 5)) (*.f64 (*.f64 1/2 re) (*.f64 im im))))
(fma.f64 -1/12 (*.f64 im (*.f64 im (pow.f64 re 3))) (*.f64 (*.f64 im im) (+.f64 (*.f64 1/2 re) (*.f64 1/240 (pow.f64 re 5)))))
(*.f64 (*.f64 im im) (+.f64 (*.f64 1/2 re) (fma.f64 -1/12 (pow.f64 re 3) (*.f64 1/240 (pow.f64 re 5)))))
(*.f64 (*.f64 im im) (fma.f64 1/2 re (fma.f64 1/240 (pow.f64 re 5) (*.f64 -1/12 (pow.f64 re 3)))))
(+.f64 (*.f64 -1/12 (*.f64 (pow.f64 re 3) (pow.f64 im 2))) (+.f64 (*.f64 1/240 (*.f64 (pow.f64 re 5) (pow.f64 im 2))) (+.f64 (*.f64 -1/10080 (*.f64 (pow.f64 re 7) (pow.f64 im 2))) (*.f64 1/2 (*.f64 re (pow.f64 im 2))))))
(fma.f64 -1/12 (*.f64 (*.f64 im im) (pow.f64 re 3)) (fma.f64 1/240 (*.f64 (*.f64 im im) (pow.f64 re 5)) (fma.f64 -1/10080 (*.f64 (*.f64 im im) (pow.f64 re 7)) (*.f64 (*.f64 1/2 re) (*.f64 im im)))))
(+.f64 (*.f64 (*.f64 im im) (+.f64 (*.f64 1/2 re) (*.f64 -1/10080 (pow.f64 re 7)))) (*.f64 (*.f64 im im) (+.f64 (*.f64 -1/12 (pow.f64 re 3)) (*.f64 1/240 (pow.f64 re 5)))))
(*.f64 (*.f64 im im) (+.f64 (fma.f64 -1/10080 (pow.f64 re 7) (*.f64 1/2 re)) (fma.f64 -1/12 (pow.f64 re 3) (*.f64 1/240 (pow.f64 re 5)))))
(*.f64 (*.f64 im im) (+.f64 (*.f64 -1/10080 (pow.f64 re 7)) (fma.f64 1/2 re (fma.f64 1/240 (pow.f64 re 5) (*.f64 -1/12 (pow.f64 re 3))))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(*.f64 1/2 (*.f64 (sin.f64 re) (pow.f64 im 2)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(-.f64 (+.f64 1 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))) 1)
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(pow.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im))) 1)
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(pow.f64 (cbrt.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))) 3)
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(pow.f64 (pow.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im))) 3) 1/3)
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(pow.f64 (*.f64 im (sqrt.f64 (*.f64 1/2 (sin.f64 re)))) 2)
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(sqrt.f64 (*.f64 (pow.f64 im 4) (*.f64 (pow.f64 (sin.f64 re) 2) 1/4)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(log.f64 (pow.f64 (exp.f64 (*.f64 im im)) (*.f64 1/2 (sin.f64 re))))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(cbrt.f64 (pow.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im))) 3))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(cbrt.f64 (*.f64 (pow.f64 (*.f64 1/2 (sin.f64 re)) 3) (pow.f64 (*.f64 im im) 3)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(cbrt.f64 (*.f64 (pow.f64 (*.f64 im im) 3) (pow.f64 (*.f64 1/2 (sin.f64 re)) 3)))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(expm1.f64 (log1p.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(exp.f64 (log.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))
(log1p.f64 (expm1.f64 (*.f64 (sin.f64 re) (*.f64 1/2 (*.f64 im im)))))
(*.f64 1/2 (*.f64 (*.f64 im im) (sin.f64 re)))
(*.f64 1/2 (*.f64 im (*.f64 im (sin.f64 re))))

eval15.0ms (0.2%)

Compiler

Compiled 786 to 451 computations (42.6% saved)

prune53.0ms (0.8%)

Pruning

10 alts after pruning (6 fresh and 4 done)

PrunedKeptTotal
New56662
Fresh000
Picked011
Done134
Total571067
Accurracy
100.0%
Counts
67 → 10
Alt Table
Click to see full alt table
StatusAccuracyProgram
7.8%
(/.f64 re (+.f64 re (-.f64 re re)))
3.6%
(/.f64 re -2)
98.8%
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
51.6%
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
11.1%
(+.f64 re re)
100.0%
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
52.6%
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
2.9%
(sqrt.f64 re)
98.4%
(sin.f64 re)
51.3%
re
Compiler

Compiled 113 to 78 computations (31% saved)

localize13.0ms (0.2%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
87.6%
(*.f64 re (pow.f64 im 2))
Compiler

Compiled 30 to 20 computations (33.3% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

6 calls:

TimeVariablePointExpression
0.0ms
re
@0
(*.f64 re (pow.f64 im 2))
0.0ms
im
@inf
(*.f64 re (pow.f64 im 2))
0.0ms
re
@inf
(*.f64 re (pow.f64 im 2))
0.0ms
re
@-inf
(*.f64 re (pow.f64 im 2))
0.0ms
im
@0
(*.f64 re (pow.f64 im 2))

rewrite71.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1198×pow1
1096×add-exp-log
1096×log1p-expm1-u
1096×expm1-log1p-u
1070×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
114213
2155913
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 re (pow.f64 im 2))
Outputs
(-.f64 (+.f64 1 (*.f64 re (*.f64 im im))) 1)
(pow.f64 (*.f64 re (*.f64 im im)) 1)
(pow.f64 (cbrt.f64 (*.f64 re (*.f64 im im))) 3)
(pow.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3) 1/3)
(pow.f64 (*.f64 im (sqrt.f64 re)) 2)
(sqrt.f64 (*.f64 (pow.f64 im 4) (*.f64 re re)))
(log.f64 (pow.f64 (pow.f64 (exp.f64 im) im) re))
(cbrt.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3))
(expm1.f64 (log1p.f64 (*.f64 re (*.f64 im im))))
(exp.f64 (log.f64 (*.f64 re (*.f64 im im))))
(log1p.f64 (expm1.f64 (*.f64 re (*.f64 im im))))

simplify72.0ms (1.1%)

Algorithm
egg-herbie
Rules
2020×log-prod
770×associate-*r*
712×distribute-rgt-in
688×distribute-lft-in
680×associate-*l*
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
037275
193209
2336143
32071143
45973143
Stop Event
node limit
Counts
11 → 14
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 re (*.f64 im im))) 1)
(pow.f64 (*.f64 re (*.f64 im im)) 1)
(pow.f64 (cbrt.f64 (*.f64 re (*.f64 im im))) 3)
(pow.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3) 1/3)
(pow.f64 (*.f64 im (sqrt.f64 re)) 2)
(sqrt.f64 (*.f64 (pow.f64 im 4) (*.f64 re re)))
(log.f64 (pow.f64 (pow.f64 (exp.f64 im) im) re))
(cbrt.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3))
(expm1.f64 (log1p.f64 (*.f64 re (*.f64 im im))))
(exp.f64 (log.f64 (*.f64 re (*.f64 im im))))
(log1p.f64 (expm1.f64 (*.f64 re (*.f64 im im))))
Outputs
(-.f64 (+.f64 1 (*.f64 re (*.f64 im im))) 1)
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(pow.f64 (*.f64 re (*.f64 im im)) 1)
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(pow.f64 (cbrt.f64 (*.f64 re (*.f64 im im))) 3)
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(pow.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3) 1/3)
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(pow.f64 (*.f64 im (sqrt.f64 re)) 2)
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(sqrt.f64 (*.f64 (pow.f64 im 4) (*.f64 re re)))
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(log.f64 (pow.f64 (pow.f64 (exp.f64 im) im) re))
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(cbrt.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3))
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(expm1.f64 (log1p.f64 (*.f64 re (*.f64 im im))))
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(exp.f64 (log.f64 (*.f64 re (*.f64 im im))))
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))
(log1p.f64 (expm1.f64 (*.f64 re (*.f64 im im))))
(+.f64 (+.f64 1 (*.f64 re (*.f64 im im))) -1)
(+.f64 (*.f64 re (*.f64 im im)) 0)
(*.f64 re (*.f64 im im))

localize3.0ms (0%)

Compiler

Compiled 6 to 3 computations (50% saved)

localize3.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

localize7.0ms (0.1%)

Compiler

Compiled 18 to 5 computations (72.2% saved)

localize2.0ms (0%)

Compiler

Compiled 5 to 3 computations (40% saved)

eval3.0ms (0%)

Compiler

Compiled 162 to 87 computations (46.3% saved)

prune5.0ms (0.1%)

Pruning

10 alts after pruning (2 fresh and 8 done)

PrunedKeptTotal
New13114
Fresh011
Picked011
Done178
Total141024
Accurracy
100.0%
Counts
24 → 10
Alt Table
Click to see full alt table
StatusAccuracyProgram
7.8%
(/.f64 re (+.f64 re (-.f64 re re)))
3.6%
(/.f64 re -2)
98.8%
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
51.6%
(+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im))))
11.1%
(+.f64 re re)
100.0%
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
52.6%
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
2.9%
(sqrt.f64 re)
98.4%
(sin.f64 re)
51.3%
re
Compiler

Compiled 79 to 54 computations (31.6% saved)

localize9.0ms (0.1%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
87.6%
(*.f64 re (*.f64 im im))
Compiler

Compiled 29 to 10 computations (65.5% saved)

series0.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
re
@0
(*.f64 re (*.f64 im im))
0.0ms
im
@inf
(*.f64 re (*.f64 im im))
0.0ms
re
@inf
(*.f64 re (*.f64 im im))
0.0ms
re
@-inf
(*.f64 re (*.f64 im im))
0.0ms
im
@-inf
(*.f64 re (*.f64 im im))

rewrite50.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
1110×pow1
1054×add-sqr-sqrt
1016×add-exp-log
1016×log1p-expm1-u
1016×expm1-log1p-u
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
112013
2144913
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 re (*.f64 im im))
Outputs
(-.f64 (+.f64 1 (*.f64 re (*.f64 im im))) 1)
(pow.f64 (*.f64 re (*.f64 im im)) 1)
(pow.f64 (cbrt.f64 (*.f64 re (*.f64 im im))) 3)
(pow.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3) 1/3)
(pow.f64 (*.f64 im (sqrt.f64 re)) 2)
(sqrt.f64 (*.f64 (*.f64 re re) (pow.f64 im 4)))
(log.f64 (pow.f64 (exp.f64 re) (*.f64 im im)))
(cbrt.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3))
(expm1.f64 (log1p.f64 (*.f64 re (*.f64 im im))))
(exp.f64 (log.f64 (*.f64 re (*.f64 im im))))
(log1p.f64 (expm1.f64 (*.f64 re (*.f64 im im))))

simplify58.0ms (0.8%)

Algorithm
egg-herbie
Rules
2164×log-prod
1110×distribute-rgt-in
1088×distribute-lft-in
802×associate-*r*
682×associate-*l*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
038455
192455
2327455
32124455
46994455
Stop Event
node limit
Counts
35 → 13
Calls
Call 1
Inputs
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(*.f64 re (pow.f64 im 2))
(-.f64 (+.f64 1 (*.f64 re (*.f64 im im))) 1)
(pow.f64 (*.f64 re (*.f64 im im)) 1)
(pow.f64 (cbrt.f64 (*.f64 re (*.f64 im im))) 3)
(pow.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3) 1/3)
(pow.f64 (*.f64 im (sqrt.f64 re)) 2)
(sqrt.f64 (*.f64 (*.f64 re re) (pow.f64 im 4)))
(log.f64 (pow.f64 (exp.f64 re) (*.f64 im im)))
(cbrt.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3))
(expm1.f64 (log1p.f64 (*.f64 re (*.f64 im im))))
(exp.f64 (log.f64 (*.f64 re (*.f64 im im))))
(log1p.f64 (expm1.f64 (*.f64 re (*.f64 im im))))
Outputs
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(*.f64 re (pow.f64 im 2))
(*.f64 re (*.f64 im im))
(-.f64 (+.f64 1 (*.f64 re (*.f64 im im))) 1)
(*.f64 re (*.f64 im im))
(pow.f64 (*.f64 re (*.f64 im im)) 1)
(*.f64 re (*.f64 im im))
(pow.f64 (cbrt.f64 (*.f64 re (*.f64 im im))) 3)
(*.f64 re (*.f64 im im))
(pow.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3) 1/3)
(*.f64 re (*.f64 im im))
(pow.f64 (*.f64 im (sqrt.f64 re)) 2)
(*.f64 re (*.f64 im im))
(sqrt.f64 (*.f64 (*.f64 re re) (pow.f64 im 4)))
(*.f64 re (*.f64 im im))
(log.f64 (pow.f64 (exp.f64 re) (*.f64 im im)))
(*.f64 re (*.f64 im im))
(cbrt.f64 (pow.f64 (*.f64 re (*.f64 im im)) 3))
(*.f64 re (*.f64 im im))
(expm1.f64 (log1p.f64 (*.f64 re (*.f64 im im))))
(*.f64 re (*.f64 im im))
(exp.f64 (log.f64 (*.f64 re (*.f64 im im))))
(*.f64 re (*.f64 im im))
(log1p.f64 (expm1.f64 (*.f64 re (*.f64 im im))))
(*.f64 re (*.f64 im im))

eval3.0ms (0%)

Compiler

Compiled 147 to 80 computations (45.6% saved)

prune5.0ms (0.1%)

Pruning

10 alts after pruning (1 fresh and 9 done)

PrunedKeptTotal
New13013
Fresh011
Picked011
Done088
Total131023
Accurracy
100.0%
Counts
23 → 10
Alt Table
Click to see full alt table
StatusAccuracyProgram
7.8%
(/.f64 re (+.f64 re (-.f64 re re)))
3.6%
(/.f64 re -2)
98.8%
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
51.6%
(+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im))))
11.1%
(+.f64 re re)
100.0%
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
52.6%
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
2.9%
(sqrt.f64 re)
98.4%
(sin.f64 re)
51.3%
re
Compiler

Compiled 79 to 54 computations (31.6% saved)

regimes80.0ms (1.2%)

Counts
13 → 1
Calls
Call 1
Inputs
re
(+.f64 re re)
(/.f64 re -2)
(/.f64 re (+.f64 re (-.f64 re re)))
(+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im))))
(sin.f64 re)
(sqrt.f64 re)
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 (sin.f64 re) (sin.f64 re))
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Calls

6 calls:

42.0ms
(*.f64 1/2 (sin.f64 re))
10.0ms
im
7.0ms
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
7.0ms
(sin.f64 re)
7.0ms
re
Results
AccuracySegmentsBranch
100.0%1re
100.0%1im
100.0%1(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
100.0%1(*.f64 1/2 (sin.f64 re))
100.0%1(sin.f64 re)
100.0%1(+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im))
Compiler

Compiled 126 to 74 computations (41.3% saved)

regimes61.0ms (0.9%)

Counts
11 → 1
Calls
Call 1
Inputs
re
(+.f64 re re)
(/.f64 re -2)
(/.f64 re (+.f64 re (-.f64 re re)))
(+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im))))
(sin.f64 re)
(sqrt.f64 re)
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 (sin.f64 re) (sin.f64 re))
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
Outputs
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
Calls

3 calls:

46.0ms
(sin.f64 re)
7.0ms
re
6.0ms
im
Results
AccuracySegmentsBranch
98.8%1re
98.8%1im
98.8%1(sin.f64 re)
Compiler

Compiled 74 to 40 computations (45.9% saved)

regimes62.0ms (0.9%)

Counts
10 → 1
Calls
Call 1
Inputs
re
(+.f64 re re)
(/.f64 re -2)
(/.f64 re (+.f64 re (-.f64 re re)))
(+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im))))
(sin.f64 re)
(sqrt.f64 re)
(+.f64 re (*.f64 1/2 (*.f64 re (pow.f64 im 2))))
(+.f64 (sin.f64 re) (sin.f64 re))
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 im) (exp.f64 (neg.f64 im))))
Outputs
(sin.f64 re)
Calls

3 calls:

48.0ms
im
6.0ms
re
6.0ms
(sin.f64 re)
Results
AccuracySegmentsBranch
98.4%1re
98.4%1im
98.4%1(sin.f64 re)
Compiler

Compiled 63 to 36 computations (42.9% saved)

regimes18.0ms (0.3%)

Counts
5 → 3
Calls
Call 1
Inputs
re
(+.f64 re re)
(/.f64 re -2)
(/.f64 re (+.f64 re (-.f64 re re)))
(+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im))))
Outputs
(/.f64 re (+.f64 re (-.f64 re re)))
(+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im))))
(/.f64 re (+.f64 re (-.f64 re re)))
Calls

2 calls:

11.0ms
re
5.0ms
im
Results
AccuracySegmentsBranch
55.9%3re
51.6%1im
Compiler

Compiled 31 to 17 computations (45.2% saved)

bsearch58.0ms (0.8%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
29.0ms
0.01274003440696836
635757.0773356701
29.0ms
-22539706.881367248
-3.9286455607595735e-5
Results
54.0ms304×body256valid
Compiler

Compiled 437 to 281 computations (35.7% saved)

regimes24.0ms (0.3%)

Counts
4 → 3
Calls
Call 1
Inputs
re
(+.f64 re re)
(/.f64 re -2)
(/.f64 re (+.f64 re (-.f64 re re)))
Outputs
(/.f64 re (+.f64 re (-.f64 re re)))
re
(/.f64 re (+.f64 re (-.f64 re re)))
Calls

2 calls:

12.0ms
im
10.0ms
re
Results
AccuracySegmentsBranch
55.6%3re
51.3%1im
Compiler

Compiled 22 to 12 computations (45.5% saved)

bsearch74.0ms (1.1%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
47.0ms
0.01274003440696836
635757.0773356701
27.0ms
-22539706.881367248
-3.9286455607595735e-5
Results
71.0ms304×body256valid
Compiler

Compiled 285 to 186 computations (34.7% saved)

regimes7.0ms (0.1%)

Accuracy

Total -31.2b remaining (-100.2%)

Threshold costs -31.2b (-100.2%)

Counts
3 → 1
Calls
Call 1
Inputs
re
(+.f64 re re)
(/.f64 re -2)
Outputs
re
Calls

2 calls:

3.0ms
re
3.0ms
im
Results
AccuracySegmentsBranch
51.3%1re
51.3%1im
Compiler

Compiled 15 to 9 computations (40% saved)

simplify64.0ms (0.9%)

Algorithm
egg-herbie
Rules
14×+-commutative
14×*-commutative
sub-neg
neg-mul-1
if-if-or-not
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
033188
155188
260188
363188
464188
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
(sin.f64 re)
(if (<=.f64 re -6980579422424269/2251799813685248) (/.f64 re (+.f64 re (-.f64 re re))) (if (<=.f64 re 1) (+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im)))) (/.f64 re (+.f64 re (-.f64 re re)))))
(if (<=.f64 re -6980579422424269/2251799813685248) (/.f64 re (+.f64 re (-.f64 re re))) (if (<=.f64 re 1) re (/.f64 re (+.f64 re (-.f64 re re)))))
re
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(+.f64 (sin.f64 re) (*.f64 (*.f64 1/2 (sin.f64 re)) (*.f64 im im)))
(sin.f64 re)
(if (<=.f64 re -6980579422424269/2251799813685248) (/.f64 re (+.f64 re (-.f64 re re))) (if (<=.f64 re 1) (+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im)))) (/.f64 re (+.f64 re (-.f64 re re)))))
(if (or (<=.f64 re -6980579422424269/2251799813685248) (not (<=.f64 re 1))) (/.f64 re (+.f64 re (-.f64 re re))) (+.f64 re (*.f64 1/2 (*.f64 re (*.f64 im im)))))
(if (<=.f64 re -6980579422424269/2251799813685248) (/.f64 re (+.f64 re (-.f64 re re))) (if (<=.f64 re 1) re (/.f64 re (+.f64 re (-.f64 re re)))))
(if (or (<=.f64 re -6980579422424269/2251799813685248) (not (<=.f64 re 1))) (/.f64 re (+.f64 re (-.f64 re re))) re)
re
Compiler

Compiled 79 to 52 computations (34.2% saved)

soundness523.0ms (7.6%)

Rules
2020×log-prod
1568×unswap-sqr
1404×fma-def
1198×pow1
1156×fma-neg
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01435
13035
27435
314133
418933
525633
643833
7110433
8315833
9354033
10403133
11567033
12665033
0981223
12981143
29601143
349691143
01223
125723
2414723
0713
114213
2155913
037275
193209
2336143
32071143
45973143
0981223
12981143
29601143
349691143
Stop Event
node limit
node limit
node limit
unsound
node limit
node limit
Compiler

Compiled 162 to 107 computations (34% saved)

end74.0ms (1.1%)

Compiler

Compiled 69 to 36 computations (47.8% saved)

Profiling

Loading profile data...