math.sin on complex, real part

Time bar (total: 2.3s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 15 to 12 computations (20% saved)

sample1.5s (66.3%)

Results
767.0ms4025×body256infinite
715.0ms4229×body256valid
2.0msbody1024valid
Bogosity

preprocess163.0ms (7.2%)

Algorithm
egg-herbie
Rules
2266×fma-def
1538×div-sub
1052×times-frac
902×distribute-lft-neg-in
784×distribute-rgt-neg-in
Problems
256×No Errors
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
036316
1111308
2394308
31005298
42232294
55131294
67600294
Stop Event
node limit
Calls
Call 1
Inputs
(*.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 (-.f64 0 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 (neg.f64 re))) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 (neg.f64 im))) (exp.f64 (neg.f64 im))))
(neg.f64 (*.f64 (*.f64 1/2 (sin.f64 (neg.f64 re))) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im))))
(neg.f64 (*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 (neg.f64 im))) (exp.f64 (neg.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 (*.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 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) (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(*.f64 (*.f64 1/2 (sin.f64 (neg.f64 re))) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
(*.f64 1/2 (*.f64 (neg.f64 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (sin.f64 re) -1/2))
(*.f64 (sin.f64 re) (*.f64 -1/2 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (sin.f64 re) (fma.f64 (exp.f64 im) -1/2 (/.f64 -1/2 (exp.f64 im))))
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 (neg.f64 im))) (exp.f64 (neg.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))))
(neg.f64 (*.f64 (*.f64 1/2 (sin.f64 (neg.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) (fma.f64 1/2 (exp.f64 im) (/.f64 1/2 (exp.f64 im))))
(neg.f64 (*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 (neg.f64 im))) (exp.f64 (neg.f64 im)))))
(*.f64 1/2 (*.f64 (neg.f64 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 (sin.f64 re) -1/2))
(*.f64 (sin.f64 re) (*.f64 -1/2 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im))))
(*.f64 (sin.f64 re) (fma.f64 (exp.f64 im) -1/2 (/.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) (*.f64 1/2 (+.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))))
Symmetry

(abs im)

(negabs re)

Compiler

Compiled 55 to 36 computations (34.5% saved)

eval1.0ms (0%)

Compiler

Compiled 24 to 15 computations (37.5% saved)

prune1.0ms (0.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)))
100.0%
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 26 to 20 computations (23.1% saved)

localize50.0ms (2.2%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(sin.f64 re)
Compiler

Compiled 36 to 14 computations (61.1% saved)

series0.0ms (0%)

Counts
1 → 4
Calls

3 calls:

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

rewrite150.0ms (6.7%)

Algorithm
batch-egg-rewrite
Rules
990×log1p-expm1-u
554×expm1-udef
554×log1p-udef
458×expm1-log1p-u
386×associate-*r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
1448
24538
350358
Stop Event
node limit
Counts
1 → 50
Calls
Call 1
Inputs
(sin.f64 re)
Outputs
(+.f64 (+.f64 (sin.f64 re) 1) -1)
(+.f64 0 (sin.f64 re))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) 2))) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 re)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sin.f64 re)))) (log.f64 (sqrt.f64 (exp.f64 (sin.f64 re)))))
(-.f64 (+.f64 (sin.f64 re) 1) 1)
(-.f64 (*.f64 (sin.f64 (+.f64 re 1)) (cos.f64 1)) (*.f64 (cos.f64 (+.f64 re 1)) (sin.f64 1)))
(*.f64 (sin.f64 re) 1)
(*.f64 (sin.f64 re) (log.f64 (E.f64)))
(*.f64 1 (sin.f64 re))
(*.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (cbrt.f64 (sin.f64 re)) 2))
(*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (cbrt.f64 (sin.f64 re)))
(*.f64 (sqrt.f64 (sin.f64 re)) (sqrt.f64 (sin.f64 re)))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))
(*.f64 (pow.f64 (sin.f64 re) 1/6) (*.f64 (pow.f64 (sin.f64 re) 1/6) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4)) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (cbrt.f64 (sin.f64 re))))
(*.f64 (pow.f64 (sin.f64 re) 1/4) (sqrt.f64 (pow.f64 (sin.f64 re) 3/2)))
(*.f64 (pow.f64 (sin.f64 re) 1/4) (*.f64 (pow.f64 (sin.f64 re) 1/4) (sqrt.f64 (sin.f64 re))))
(*.f64 (*.f64 (sqrt.f64 (sin.f64 re)) (cbrt.f64 (sin.f64 re))) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (pow.f64 1 1/3) (sin.f64 re))
(*.f64 (pow.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2) 1/3) (cbrt.f64 (cbrt.f64 (sin.f64 re))))
(*.f64 (pow.f64 (pow.f64 (sin.f64 re) 5/2) 1/3) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))
(*.f64 (cbrt.f64 (pow.f64 (sin.f64 re) 5/2)) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (*.f64 (sqrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 1/4)) (pow.f64 (sin.f64 re) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (sin.f64 re) 3/2)) (pow.f64 (sin.f64 re) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 5)) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (*.f64 (cbrt.f64 (sin.f64 re)) (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4))) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (sin.f64 re) 1/6)) (pow.f64 (sin.f64 re) 1/6))
(/.f64 (sqrt.f64 (-.f64 (cos.f64 0) (cos.f64 (*.f64 re 2)))) (sqrt.f64 2))
(/.f64 (-.f64 (pow.f64 (+.f64 (sin.f64 re) 1) 3) 1) (+.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) (+.f64 1 (+.f64 (sin.f64 re) 1))))
(/.f64 (-.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) 1) (+.f64 (+.f64 (sin.f64 re) 1) 1))
(pow.f64 (sin.f64 re) 1)
(pow.f64 (cbrt.f64 (sin.f64 re)) 3)
(pow.f64 (pow.f64 (sin.f64 re) 2) 1/2)
(pow.f64 (pow.f64 (sin.f64 re) 3) 1/3)
(pow.f64 (sqrt.f64 (sin.f64 re)) 2)
(pow.f64 (E.f64) (log.f64 (sin.f64 re)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (sin.f64 re))) 2)) (cbrt.f64 (log.f64 (sin.f64 re))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (sin.f64 re)))) (sqrt.f64 (log.f64 (sin.f64 re))))
(sqrt.f64 (pow.f64 (sin.f64 re) 2))
(fabs.f64 (sin.f64 re))
(log.f64 (exp.f64 (sin.f64 re)))
(cbrt.f64 (pow.f64 (sin.f64 re) 3))
(expm1.f64 (log1p.f64 (sin.f64 re)))
(exp.f64 (log.f64 (sin.f64 re)))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (sin.f64 re))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (sin.f64 re) 3)) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (sin.f64 re))) 2))
(log1p.f64 (expm1.f64 (sin.f64 re)))

simplify56.0ms (2.5%)

Algorithm
egg-herbie
Rules
1258×fma-def
634×associate-+r-
600×times-frac
592×log-prod
512×distribute-lft-out
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01621123
13551107
210421094
344291034
Stop Event
node limit
Counts
54 → 75
Calls
Call 1
Inputs
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 1/120 (pow.f64 re 5))))
(+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (+.f64 (*.f64 -1/5040 (pow.f64 re 7)) (*.f64 1/120 (pow.f64 re 5)))))
(+.f64 (+.f64 (sin.f64 re) 1) -1)
(+.f64 0 (sin.f64 re))
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) 2))) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 re)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sin.f64 re)))) (log.f64 (sqrt.f64 (exp.f64 (sin.f64 re)))))
(-.f64 (+.f64 (sin.f64 re) 1) 1)
(-.f64 (*.f64 (sin.f64 (+.f64 re 1)) (cos.f64 1)) (*.f64 (cos.f64 (+.f64 re 1)) (sin.f64 1)))
(*.f64 (sin.f64 re) 1)
(*.f64 (sin.f64 re) (log.f64 (E.f64)))
(*.f64 1 (sin.f64 re))
(*.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (cbrt.f64 (sin.f64 re)) 2))
(*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (cbrt.f64 (sin.f64 re)))
(*.f64 (sqrt.f64 (sin.f64 re)) (sqrt.f64 (sin.f64 re)))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))
(*.f64 (pow.f64 (sin.f64 re) 1/6) (*.f64 (pow.f64 (sin.f64 re) 1/6) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4)) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (cbrt.f64 (sin.f64 re))))
(*.f64 (pow.f64 (sin.f64 re) 1/4) (sqrt.f64 (pow.f64 (sin.f64 re) 3/2)))
(*.f64 (pow.f64 (sin.f64 re) 1/4) (*.f64 (pow.f64 (sin.f64 re) 1/4) (sqrt.f64 (sin.f64 re))))
(*.f64 (*.f64 (sqrt.f64 (sin.f64 re)) (cbrt.f64 (sin.f64 re))) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (pow.f64 1 1/3) (sin.f64 re))
(*.f64 (pow.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2) 1/3) (cbrt.f64 (cbrt.f64 (sin.f64 re))))
(*.f64 (pow.f64 (pow.f64 (sin.f64 re) 5/2) 1/3) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))
(*.f64 (cbrt.f64 (pow.f64 (sin.f64 re) 5/2)) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (*.f64 (sqrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 1/4)) (pow.f64 (sin.f64 re) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (sin.f64 re) 3/2)) (pow.f64 (sin.f64 re) 1/4))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 5)) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (*.f64 (cbrt.f64 (sin.f64 re)) (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4))) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (sin.f64 re) 1/6)) (pow.f64 (sin.f64 re) 1/6))
(/.f64 (sqrt.f64 (-.f64 (cos.f64 0) (cos.f64 (*.f64 re 2)))) (sqrt.f64 2))
(/.f64 (-.f64 (pow.f64 (+.f64 (sin.f64 re) 1) 3) 1) (+.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) (+.f64 1 (+.f64 (sin.f64 re) 1))))
(/.f64 (-.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) 1) (+.f64 (+.f64 (sin.f64 re) 1) 1))
(pow.f64 (sin.f64 re) 1)
(pow.f64 (cbrt.f64 (sin.f64 re)) 3)
(pow.f64 (pow.f64 (sin.f64 re) 2) 1/2)
(pow.f64 (pow.f64 (sin.f64 re) 3) 1/3)
(pow.f64 (sqrt.f64 (sin.f64 re)) 2)
(pow.f64 (E.f64) (log.f64 (sin.f64 re)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (sin.f64 re))) 2)) (cbrt.f64 (log.f64 (sin.f64 re))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (sin.f64 re)))) (sqrt.f64 (log.f64 (sin.f64 re))))
(sqrt.f64 (pow.f64 (sin.f64 re) 2))
(fabs.f64 (sin.f64 re))
(log.f64 (exp.f64 (sin.f64 re)))
(cbrt.f64 (pow.f64 (sin.f64 re) 3))
(expm1.f64 (log1p.f64 (sin.f64 re)))
(exp.f64 (log.f64 (sin.f64 re)))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (sin.f64 re))) 3))
(exp.f64 (*.f64 (log.f64 (pow.f64 (sin.f64 re) 3)) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (sin.f64 re))) 2))
(log1p.f64 (expm1.f64 (sin.f64 re)))
Outputs
re
(+.f64 re (*.f64 -1/6 (pow.f64 re 3)))
(fma.f64 -1/6 (pow.f64 re 3) re)
(+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (*.f64 1/120 (pow.f64 re 5))))
(+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (*.f64 1/120 (pow.f64 re 5))))
(fma.f64 -1/6 (pow.f64 re 3) (fma.f64 1/120 (pow.f64 re 5) re))
(+.f64 re (+.f64 (*.f64 -1/6 (pow.f64 re 3)) (+.f64 (*.f64 -1/5040 (pow.f64 re 7)) (*.f64 1/120 (pow.f64 re 5)))))
(+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (fma.f64 -1/5040 (pow.f64 re 7) (*.f64 1/120 (pow.f64 re 5)))))
(+.f64 re (fma.f64 -1/6 (pow.f64 re 3) (fma.f64 1/120 (pow.f64 re 5) (*.f64 -1/5040 (pow.f64 re 7)))))
(+.f64 (fma.f64 -1/6 (pow.f64 re 3) re) (fma.f64 1/120 (pow.f64 re 5) (*.f64 -1/5040 (pow.f64 re 7))))
(+.f64 (+.f64 (sin.f64 re) 1) -1)
(sin.f64 re)
(+.f64 0 (sin.f64 re))
(sin.f64 re)
(+.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (sin.f64 re)) 2))) (log.f64 (cbrt.f64 (exp.f64 (sin.f64 re)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (sin.f64 re)))) (log.f64 (sqrt.f64 (exp.f64 (sin.f64 re)))))
(sin.f64 re)
(-.f64 (+.f64 (sin.f64 re) 1) 1)
(sin.f64 re)
(-.f64 (*.f64 (sin.f64 (+.f64 re 1)) (cos.f64 1)) (*.f64 (cos.f64 (+.f64 re 1)) (sin.f64 1)))
(*.f64 (sin.f64 re) 1)
(sin.f64 re)
(*.f64 (sin.f64 re) (log.f64 (E.f64)))
(sin.f64 re)
(*.f64 1 (sin.f64 re))
(sin.f64 re)
(*.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (cbrt.f64 (sin.f64 re)) 2))
(sin.f64 re)
(*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (cbrt.f64 (sin.f64 re)))
(sin.f64 re)
(*.f64 (sqrt.f64 (sin.f64 re)) (sqrt.f64 (sin.f64 re)))
(sin.f64 re)
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))
(sin.f64 re)
(*.f64 (pow.f64 (sin.f64 re) 1/6) (*.f64 (pow.f64 (sin.f64 re) 1/6) (pow.f64 (cbrt.f64 (sin.f64 re)) 2)))
(sin.f64 re)
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4)) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (cbrt.f64 (sin.f64 re))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4)) (*.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2)))
(*.f64 (cbrt.f64 (sin.f64 re)) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 5))
(*.f64 (pow.f64 (sin.f64 re) 1/4) (sqrt.f64 (pow.f64 (sin.f64 re) 3/2)))
(sin.f64 re)
(*.f64 (pow.f64 (sin.f64 re) 1/4) (*.f64 (pow.f64 (sin.f64 re) 1/4) (sqrt.f64 (sin.f64 re))))
(sin.f64 re)
(*.f64 (*.f64 (sqrt.f64 (sin.f64 re)) (cbrt.f64 (sin.f64 re))) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (sqrt.f64 (sin.f64 re)) (*.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 1/6)))
(*.f64 (cbrt.f64 (sin.f64 re)) (*.f64 (sqrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 1/6)))
(*.f64 (sqrt.f64 (sin.f64 re)) (pow.f64 (pow.f64 (sin.f64 re) 1/6) 3))
(*.f64 (pow.f64 1 1/3) (sin.f64 re))
(sin.f64 re)
(*.f64 (pow.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2) 1/3) (cbrt.f64 (cbrt.f64 (sin.f64 re))))
(*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2)))
(*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 8)))
(*.f64 (pow.f64 (pow.f64 (sin.f64 re) 5/2) 1/3) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (pow.f64 (sin.f64 re) 1/6) (cbrt.f64 (pow.f64 (sin.f64 re) 5/2)))
(*.f64 (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))
(*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (cbrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4) 2)))
(*.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 8)))
(*.f64 (cbrt.f64 (pow.f64 (sin.f64 re) 5/2)) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (pow.f64 (sin.f64 re) 1/6) (cbrt.f64 (pow.f64 (sin.f64 re) 5/2)))
(*.f64 (*.f64 (sqrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 1/4)) (pow.f64 (sin.f64 re) 1/4))
(sin.f64 re)
(*.f64 (sqrt.f64 (pow.f64 (sin.f64 re) 3/2)) (pow.f64 (sin.f64 re) 1/4))
(sin.f64 re)
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 5)) (pow.f64 (sin.f64 re) 1/6))
(*.f64 (sqrt.f64 (sin.f64 re)) (*.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 1/6)))
(*.f64 (cbrt.f64 (sin.f64 re)) (*.f64 (sqrt.f64 (sin.f64 re)) (pow.f64 (sin.f64 re) 1/6)))
(*.f64 (sqrt.f64 (sin.f64 re)) (pow.f64 (pow.f64 (sin.f64 re) 1/6) 3))
(*.f64 (*.f64 (cbrt.f64 (sin.f64 re)) (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4))) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4)) (*.f64 (cbrt.f64 (sin.f64 re)) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2)))
(*.f64 (cbrt.f64 (sin.f64 re)) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 5))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (sin.f64 re))) 2)) (cbrt.f64 (cbrt.f64 (sin.f64 re))))
(sin.f64 re)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 re)) 2) (pow.f64 (sin.f64 re) 1/6)) (pow.f64 (sin.f64 re) 1/6))
(sin.f64 re)
(/.f64 (sqrt.f64 (-.f64 (cos.f64 0) (cos.f64 (*.f64 re 2)))) (sqrt.f64 2))
(/.f64 (sqrt.f64 (-.f64 1 (cos.f64 (*.f64 re 2)))) (sqrt.f64 2))
(/.f64 (-.f64 (pow.f64 (+.f64 (sin.f64 re) 1) 3) 1) (+.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) (+.f64 1 (+.f64 (sin.f64 re) 1))))
(/.f64 (+.f64 (pow.f64 (+.f64 (sin.f64 re) 1) 3) -1) (fma.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 2)))
(/.f64 (+.f64 -1 (pow.f64 (+.f64 (sin.f64 re) 1) 3)) (fma.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 2)))
(/.f64 (+.f64 -1 (pow.f64 (+.f64 (sin.f64 re) 1) 3)) (+.f64 1 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 2))))
(/.f64 (+.f64 -1 (pow.f64 (+.f64 (sin.f64 re) 1) 3)) (fma.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 2) 1))
(/.f64 (-.f64 (*.f64 (+.f64 (sin.f64 re) 1) (+.f64 (sin.f64 re) 1)) 1) (+.f64 (+.f64 (sin.f64 re) 1) 1))
(sin.f64 re)
(pow.f64 (sin.f64 re) 1)
(sin.f64 re)
(pow.f64 (cbrt.f64 (sin.f64 re)) 3)
(sin.f64 re)
(pow.f64 (pow.f64 (sin.f64 re) 2) 1/2)
(sin.f64 re)
(pow.f64 (pow.f64 (sin.f64 re) 3) 1/3)
(sin.f64 re)
(pow.f64 (sqrt.f64 (sin.f64 re)) 2)
(sin.f64 re)
(pow.f64 (E.f64) (log.f64 (sin.f64 re)))
(sin.f64 re)
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (sin.f64 re))) 2)) (cbrt.f64 (log.f64 (sin.f64 re))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (sin.f64 re)))) (sqrt.f64 (log.f64 (sin.f64 re))))
(sqrt.f64 (pow.f64 (sin.f64 re) 2))
(sin.f64 re)
(fabs.f64 (sin.f64 re))
(sin.f64 re)
(log.f64 (exp.f64 (sin.f64 re)))
(sin.f64 re)
(cbrt.f64 (pow.f64 (sin.f64 re) 3))
(sin.f64 re)
(expm1.f64 (log1p.f64 (sin.f64 re)))
(sin.f64 re)
(exp.f64 (log.f64 (sin.f64 re)))
(sin.f64 re)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (sin.f64 re))) 3))
(sin.f64 re)
(exp.f64 (*.f64 (log.f64 (pow.f64 (sin.f64 re) 3)) 1/3))
(sin.f64 re)
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (sin.f64 re))) 2))
(sin.f64 re)
(log1p.f64 (expm1.f64 (sin.f64 re)))
(sin.f64 re)

eval23.0ms (1%)

Compiler

Compiled 1479 to 682 computations (53.9% saved)

prune12.0ms (0.5%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New74175
Fresh000
Picked011
Done000
Total74276
Accuracy
100.0%
Counts
76 → 2
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)))
61.0%
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
100.0%
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
61.0%
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 50 to 38 computations (24% saved)

localize40.0ms (1.8%)

Compiler

Compiled 32 to 13 computations (59.4% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0.1%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done011
Total022
Accuracy
100.0%
Counts
2 → 2
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)))
61.0%
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Compiler

Compiled 60 to 39 computations (35% saved)

regimes21.0ms (0.9%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 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 (*.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:

4.0ms
im
3.0ms
(*.f64 1/2 (sin.f64 re))
3.0ms
(sin.f64 re)
3.0ms
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (-.f64 0 im)) (exp.f64 im)))
3.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 74 to 50 computations (32.4% saved)

regimes6.0ms (0.3%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Calls

2 calls:

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

Compiled 18 to 13 computations (27.8% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Rules
10×*-commutative
+-commutative
sub-neg
neg-mul-1
neg-sub0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01884
12784
22984
33084
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
Outputs
(*.f64 (*.f64 1/2 (sin.f64 re)) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (*.f64 1/2 re) (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)))
(*.f64 (+.f64 (exp.f64 (neg.f64 im)) (exp.f64 im)) (*.f64 1/2 re))
Compiler

Compiled 25 to 19 computations (24% saved)

soundness196.0ms (8.7%)

Rules
2266×fma-def
1538×div-sub
1052×times-frac
902×distribute-lft-neg-in
784×distribute-rgt-neg-in
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
036316
1111308
2394308
31005298
42232294
55131294
67600294
Stop Event
node limit
Compiler

Compiled 100 to 57 computations (43% saved)

end0.0ms (0%)

preprocess35.0ms (1.5%)

Remove

(negabs re)

(abs im)

Compiler

Compiled 126 to 88 computations (30.2% saved)

Profiling

Loading profile data...