Details

Time bar (total: 11.5s)

analyze1.6s (14.2%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
0%99.9%0.1%5
0%99.9%0.1%6
6.2%93.6%0.1%7
9.4%90.5%0.1%8
14%85.8%0.1%9
19.5%80.4%0.1%10
20.7%79.2%0.1%11
22%77.8%0.1%12
23.5%76.4%0.1%13
23.8%76%0.1%14
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample4.0s (34.9%)

Results
2.5s3591×body1024valid
545.0ms1365×body512valid
384.0ms2453×body128valid
321.0ms214×body2048valid
184.0ms633×body256valid
1.0msbody1024invalid
0.0msbody256invalid
Compiler

Compiled 38 to 26 computations (31.6% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
+-commutative_binary64
associate-*r/_binary64
associate-*l/_binary64
Counts
1 → 2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0914
11314
21614
32014
42114
52114

prune2.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
15.1b
Counts
3 → 1
Alt Table
StatusErrorProgram
15.1b
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Compiler

Compiled 45 to 28 computations (37.8% saved)

localize7.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.2b
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
0.2b
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
2.7b
(cos.f64 (+.f64 a b))

series72.0ms (0.6%)

Counts
3 → 52
Calls

3 calls:

43.0ms
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
24.0ms
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
5.0ms
(cos.f64 (+.f64 a b))

rewrite93.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
692×prod-diff_binary64
214×fma-def_binary64
196×expm1-udef_binary64
196×log1p-udef_binary64
128×egg-rr
Counts
3 → 128
Calls

3 calls:

90.0ms
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
90.0ms
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
90.0ms
(cos.f64 (+.f64 a b))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0931
120031
2273631
3480031
4501631
000
100

simplify64.0ms (0.6%)

Algorithm
egg-herbie
Rules
694×fma-def_binary64
622×associate-*l*_binary64
444×associate-/r*_binary64
196×associate-/r/_binary64
178×associate-*l/_binary64
Counts
180 → 172
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01551422
14431420
216301358
350641358

prune232.0ms (2%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New15616172
Fresh000
Picked101
Done000
Total15716173
Error
0.1b
Counts
173 → 16
Alt Table
StatusErrorProgram
15.9b
(*.f64 r (*.f64 (pow.f64 (cbrt.f64 (sin.f64 b)) 2) (*.f64 (cbrt.f64 (sin.f64 b)) (/.f64 1 (cos.f64 (+.f64 a b))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)) (fma.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b)) (fma.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))))))
15.1b
(/.f64 (*.f64 (sin.f64 b) r) (cos.f64 (+.f64 a b)))
15.8b
(pow.f64 (cbrt.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) r)) 3)
32.0b
(*.f64 r (+.f64 (/.f64 (sin.f64 b) (cos.f64 b)) (fma.f64 (/.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (cos.f64 b) 2)) a (fma.f64 1/2 (*.f64 (/.f64 (sin.f64 b) (cos.f64 b)) (*.f64 a a)) (fma.f64 (/.f64 (pow.f64 (sin.f64 b) 3) (pow.f64 (cos.f64 b) 3)) (*.f64 a a) (fma.f64 5/6 (/.f64 (*.f64 (pow.f64 a 3) (pow.f64 (sin.f64 b) 2)) (pow.f64 (cos.f64 b) 2)) (/.f64 (*.f64 (pow.f64 a 3) (pow.f64 (sin.f64 b) 4)) (pow.f64 (cos.f64 b) 4))))))))
15.2b
(*.f64 r (/.f64 (sin.f64 b) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (+.f64 a b)))) 1)))
15.6b
(/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 (sin.f64 b) r)))
22.7b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (sqrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (sqrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
0.8b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
15.2b
(/.f64 r (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b)))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)))))))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
36.5b
(cbrt.f64 (pow.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) r) 3))
30.3b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b))))
15.4b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (cos.f64 (+.f64 a b))))
Compiler

Compiled 5288 to 1897 computations (64.1% saved)

localize18.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))
0.2b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
0.2b
(/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
49.0b
(fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))

series230.0ms (2%)

Counts
4 → 108
Calls

4 calls:

126.0ms
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
71.0ms
(/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
24.0ms
(fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))
9.0ms
(*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))

rewrite81.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
288×expm1-udef_binary64
288×log1p-udef_binary64
248×fma-neg_binary64
179×add-sqr-sqrt_binary64
165×log1p-expm1-u_binary64
Counts
4 → 111
Calls

4 calls:

78.0ms
(*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))
78.0ms
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
78.0ms
(/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
78.0ms
(fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
018115
135590
2404090
3508390
000
100

simplify63.0ms (0.5%)

Algorithm
egg-herbie
Rules
743×fma-def_binary64
675×associate-*l*_binary64
444×associate-/r*_binary64
196×associate-/r/_binary64
178×associate-*l/_binary64
Counts
219 → 164
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01752338
14962328
217662244
354982244

prune330.0ms (2.9%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New1994203
Fresh31215
Picked101
Done000
Total20316219
Error
0.0b
Counts
219 → 16
Alt Table
StatusErrorProgram
15.9b
(*.f64 r (*.f64 (pow.f64 (cbrt.f64 (sin.f64 b)) 2) (*.f64 (cbrt.f64 (sin.f64 b)) (/.f64 1 (cos.f64 (+.f64 a b))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)) (fma.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b)) (fma.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))))))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log1p.f64 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
15.4b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (cos.f64 (+.f64 a b))))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
15.6b
(/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 (sin.f64 b) r)))
0.8b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
15.2b
(/.f64 r (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b)))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (log.f64 (pow.f64 (exp.f64 (sin.f64 b)) (sin.f64 a)))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 3)))))
36.5b
(cbrt.f64 (pow.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) r) 3))
15.8b
(pow.f64 (cbrt.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) r)) 3)
15.2b
(*.f64 r (/.f64 (sin.f64 b) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (+.f64 a b)))) 1)))
30.3b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b))))
Compiler

Compiled 7961 to 3293 computations (58.6% saved)

localize21.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log1p.f64 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
0.2b
(*.f64 (sin.f64 b) (sin.f64 a))
0.2b
(/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log1p.f64 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
49.0b
(fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))

series208.0ms (1.8%)

Counts
3 → 76
Calls

3 calls:

127.0ms
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log1p.f64 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
71.0ms
(/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log1p.f64 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
10.0ms
(*.f64 (sin.f64 b) (sin.f64 a))

rewrite77.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
308×expm1-udef_binary64
308×log1p-udef_binary64
194×add-sqr-sqrt_binary64
182×expm1-log1p-u_binary64
181×log1p-expm1-u_binary64
Counts
3 → 89
Calls

3 calls:

74.0ms
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log1p.f64 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
74.0ms
(*.f64 (sin.f64 b) (sin.f64 a))
74.0ms
(/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log1p.f64 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02197
138163
2432263
3515763
000
100

simplify60.0ms (0.5%)

Algorithm
egg-herbie
Rules
740×fma-def_binary64
675×associate-*l*_binary64
444×associate-/r*_binary64
196×associate-/r/_binary64
178×associate-*l/_binary64
Counts
165 → 141
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01732250
14912240
217552156
354942156

prune291.0ms (2.5%)

Pruning

16 alts after pruning (15 fresh and 1 done)

PrunedKeptTotal
New1700170
Fresh01515
Picked011
Done000
Total17016186
Error
0.0b
Counts
186 → 16
Alt Table
StatusErrorProgram
15.9b
(*.f64 r (*.f64 (pow.f64 (cbrt.f64 (sin.f64 b)) 2) (*.f64 (cbrt.f64 (sin.f64 b)) (/.f64 1 (cos.f64 (+.f64 a b))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)) (fma.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b)) (fma.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))))))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log1p.f64 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
15.4b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (cos.f64 (+.f64 a b))))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
15.6b
(/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 (sin.f64 b) r)))
0.8b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
15.2b
(/.f64 r (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b)))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (log.f64 (pow.f64 (exp.f64 (sin.f64 b)) (sin.f64 a)))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 3)))))
36.5b
(cbrt.f64 (pow.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) r) 3))
15.8b
(pow.f64 (cbrt.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) r)) 3)
15.2b
(*.f64 r (/.f64 (sin.f64 b) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (+.f64 a b)))) 1)))
30.3b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b))))
Compiler

Compiled 6352 to 2365 computations (62.8% saved)

localize18.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))
0.2b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
0.2b
(/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
49.0b
(fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))

series202.0ms (1.8%)

Counts
2 → 60
Calls

2 calls:

128.0ms
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
74.0ms
(/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))

rewrite76.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
311×expm1-udef_binary64
311×log1p-udef_binary64
194×add-sqr-sqrt_binary64
179×log1p-expm1-u_binary64
179×expm1-log1p-u_binary64
Counts
2 → 63
Calls

2 calls:

75.0ms
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
74.0ms
(/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01993
138151
2443351
3526751
000
100

simplify52.0ms (0.5%)

Algorithm
egg-herbie
Rules
596×fma-def_binary64
550×associate-*r*_binary64
535×associate-*l*_binary64
444×associate-/r*_binary64
196×associate-/r/_binary64
Counts
123 → 98
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01401982
13831980
214251920
351861920

prune347.0ms (3%)

Pruning

15 alts after pruning (14 fresh and 1 done)

PrunedKeptTotal
New2041205
Fresh11314
Picked101
Done011
Total20615221
Error
0.0b
Counts
221 → 15
Alt Table
StatusErrorProgram
15.9b
(*.f64 r (*.f64 (pow.f64 (cbrt.f64 (sin.f64 b)) 2) (*.f64 (cbrt.f64 (sin.f64 b)) (/.f64 1 (cos.f64 (+.f64 a b))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)) (fma.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b)) (fma.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))))))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))))))
36.5b
(cbrt.f64 (pow.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) r) 3))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log1p.f64 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
15.4b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 2)) (cbrt.f64 (cos.f64 (+.f64 a b))))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
15.6b
(/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 (sin.f64 b) r)))
0.8b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b)))) (cbrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))))))
15.2b
(/.f64 r (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b)))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))) (fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (log.f64 (pow.f64 (exp.f64 (sin.f64 b)) (sin.f64 a)))))))
15.8b
(pow.f64 (cbrt.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) r)) 3)
15.2b
(*.f64 r (/.f64 (sin.f64 b) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (+.f64 a b)))) 1)))
30.3b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b))))
Compiler

Compiled 7260 to 3126 computations (56.9% saved)

regimes3.0s (25.9%)

Accuracy

Total 0.2b remaining (73.4%)

Threshold costs 0.2b (73.4%)

Counts
283 → 1
Compiler

Compiled 39501 to 24268 computations (38.6% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
distribute-rgt-neg-in_binary64
distribute-lft-neg-in_binary64
sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01946
13246
24446
34746
44846
54646

end325.0ms (2.8%)

Compiler

Compiled 490 to 271 computations (44.7% saved)

Profiling

Loading profile data...