Details

Time bar (total: 11.4s)

analyze1.6s (13.9%)

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

Results
2.4s3599×body1024valid
625.0ms1425×body512valid
385.0ms2444×body128valid
304.0ms230×body2048valid
171.0ms558×body256valid
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
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0914
11314
21714
32114
42214
Stop Event
saturated
Counts
1 → 2

prune3.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
15.2b
Counts
3 → 2
Alt Table
StatusErrorProgram
15.3b
(/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b)))
15.3b
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
Compiler

Compiled 69 to 44 computations (36.2% 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)))
3.0b
(cos.f64 (+.f64 a b))

series65.0ms (0.6%)

Counts
3 → 52
Calls

3 calls:

39.0ms
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))))
22.0ms
(/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))
3.0ms
(cos.f64 (+.f64 a b))

rewrite57.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
588×prod-diff_binary64
214×fma-def_binary64
196×expm1-udef_binary64
196×log1p-udef_binary64
123×egg-rr
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0931
120031
2286431
Stop Event
node limit
Counts
3 → 123
Calls

3 calls:

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

simplify35.0ms (0.3%)

Algorithm
egg-herbie
Rules
692×fma-def_binary64
619×associate-*l*_binary64
441×associate-/r*_binary64
196×associate-/r/_binary64
178×associate-*l/_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01551422
14691420
217081358
Stop Event
node limit
Counts
175 → 168

prune244.0ms (2.1%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New15315168
Fresh011
Picked101
Done000
Total15416170
Error
0.1b
Counts
170 → 16
Alt Table
StatusErrorProgram
15.4b
(*.f64 r (/.f64 (sin.f64 b) (cbrt.f64 (pow.f64 (cos.f64 (+.f64 a b)) 3))))
30.6b
(fma.f64 1/2 (*.f64 (/.f64 (sin.f64 b) (cos.f64 b)) (*.f64 a (*.f64 a r))) (fma.f64 (/.f64 (sin.f64 b) (cos.f64 b)) r (fma.f64 5/6 (*.f64 (/.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 (pow.f64 a 3) r)) (fma.f64 (/.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 a r) (fma.f64 (/.f64 (pow.f64 (sin.f64 b) 3) (pow.f64 (cos.f64 b) 3)) (*.f64 a (*.f64 a r)) (*.f64 (/.f64 (pow.f64 (sin.f64 b) 4) (pow.f64 (cos.f64 b) 4)) (*.f64 (pow.f64 a 3) r)))))))
29.8b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b))))
21.8b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (sqrt.f64 (*.f64 (cos.f64 a) (cos.f64 b))) (sqrt.f64 (*.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)))))))
30.4b
(fma.f64 (/.f64 b (cos.f64 a)) r (*.f64 (*.f64 (/.f64 (sin.f64 a) (/.f64 (pow.f64 (cos.f64 a) 2) b)) b) r))
15.6b
(/.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.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 (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)))))))
15.3b
(/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b)))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b))) (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)))) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a))))))
38.5b
(*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) 2))
15.3b
(/.f64 (*.f64 (neg.f64 (sin.f64 b)) r) (neg.f64 (cos.f64 (+.f64 a b))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 1 (*.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 (-.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.5b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))))))
39.5b
(*.f64 r (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sqrt.f64 (sin.f64 b)) (/.f64 1 (cos.f64 (+.f64 a b))))))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
Compiler

Compiled 5439 to 1908 computations (64.9% saved)

localize14.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))
0.2b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
0.2b
(*.f64 (sin.f64 b) (sin.f64 a))
0.2b
(/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))

series178.0ms (1.6%)

Counts
4 → 100
Calls

4 calls:

100.0ms
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
54.0ms
(/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
16.0ms
(fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))
8.0ms
(*.f64 (sin.f64 b) (sin.f64 a))

rewrite146.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
770×prod-diff_binary64
441×egg-rr
145×add-sqr-sqrt_binary64
133×log1p-expm1-u_binary64
133×expm1-log1p-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01375
127539
2377839
Stop Event
node limit
Counts
4 → 441
Calls

4 calls:

129.0ms
(fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))
129.0ms
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
129.0ms
(*.f64 (sin.f64 b) (sin.f64 a))
129.0ms
(/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))

simplify68.0ms (0.6%)

Algorithm
egg-herbie
Rules
841×fma-def_binary64
438×associate-/r*_binary64
236×cancel-sign-sub-inv_binary64
196×associate-/r/_binary64
178×associate-*l/_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01872682
15782672
220482586
Stop Event
node limit
Counts
541 → 508

prune842.0ms (7.4%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New5017508
Fresh6915
Picked101
Done000
Total50816524
Error
0.0b
Counts
524 → 16
Alt Table
StatusErrorProgram
29.8b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b))))
0.5b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cos.f64 a) (cbrt.f64 (pow.f64 (cos.f64 b) 2))) (cbrt.f64 (cos.f64 b)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a))) (cbrt.f64 (pow.f64 (sin.f64 b) 2)) (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2)))))))
30.4b
(fma.f64 (/.f64 b (cos.f64 a)) r (*.f64 (*.f64 (/.f64 (sin.f64 a) (/.f64 (pow.f64 (cos.f64 a) 2) b)) b) r))
14.7b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cos.f64 a) (sqrt.f64 (cos.f64 b))) (sqrt.f64 (cos.f64 b)) (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (cbrt.f64 (pow.f64 (sin.f64 b) 2)))))) (fma.f64 (neg.f64 (cbrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (cbrt.f64 (pow.f64 (sin.f64 b) 2))) (*.f64 (cbrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))))))
15.6b
(/.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.6b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 a)) 2) (*.f64 (cbrt.f64 (cos.f64 a)) (cos.f64 b)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a))) (cbrt.f64 (pow.f64 (sin.f64 b) 2)) (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2)))))))
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 (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)))))))
26.9b
(*.f64 r (cbrt.f64 (/.f64 (pow.f64 (sin.f64 b) 3) (pow.f64 (cos.f64 (-.f64 b a)) 3))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b))) (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)))) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a))))))
15.3b
(/.f64 r (/.f64 (cos.f64 (+.f64 b a)) (sin.f64 b)))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))))))
15.4b
(*.f64 r (/.f64 (sin.f64 b) (cbrt.f64 (pow.f64 (cos.f64 (+.f64 a b)) 3))))
38.5b
(*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) 2))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1)))))
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 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
Compiler

Compiled 20090 to 5112 computations (74.6% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
0.1b
(*.f64 (sin.f64 b) r)
0.2b
(*.f64 (sin.f64 b) (sin.f64 a))
0.2b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))

series114.0ms (1%)

Counts
3 → 36
Calls

3 calls:

94.0ms
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
13.0ms
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
6.0ms
(*.f64 (sin.f64 b) r)

rewrite62.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
277×expm1-udef_binary64
277×log1p-udef_binary64
154×add-sqr-sqrt_binary64
148×log1p-expm1-u_binary64
148×expm1-log1p-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01350
129726
2436326
Stop Event
node limit
Counts
3 → 113
Calls

3 calls:

60.0ms
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
60.0ms
(*.f64 (sin.f64 b) r)
60.0ms
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))

simplify31.0ms (0.3%)

Algorithm
egg-herbie
Rules
833×times-frac_binary64
666×associate-/l*_binary64
529×fma-def_binary64
310×associate-/r*_binary64
154×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01321093
14201083
214631035
Stop Event
node limit
Counts
149 → 154

prune374.0ms (3.3%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New18711198
Fresh9615
Picked101
Done000
Total19717214
Error
0.0b
Counts
214 → 17
Alt Table
StatusErrorProgram
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))))
15.3b
(*.f64 r (*.f64 (sin.f64 b) (/.f64 1 (cos.f64 (+.f64 b a)))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1)))
15.3b
(*.f64 (sin.f64 b) (*.f64 r (/.f64 1 (cos.f64 (+.f64 b a)))))
38.5b
(*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) 2))
28.9b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (pow.f64 (sqrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 2)))
29.8b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))))
30.4b
(fma.f64 (/.f64 b (cos.f64 a)) r (*.f64 (*.f64 (/.f64 (sin.f64 a) (/.f64 (pow.f64 (cos.f64 a) 2) b)) b) r))
0.6b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 a)) 2) (*.f64 (cbrt.f64 (cos.f64 a)) (cos.f64 b)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2))))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a))) (cbrt.f64 (pow.f64 (sin.f64 b) 2)) (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (cbrt.f64 (pow.f64 (sin.f64 b) 2)))))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (cbrt.f64 (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3))))
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 (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 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) (sin.f64 a))) 3)))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))))
15.3b
(*.f64 (/.f64 (sin.f64 b) 1) (/.f64 r (cos.f64 (+.f64 b a))))
1.2b
(/.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) r)) 3) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (*.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (cos.f64 a) (cos.f64 b))) (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)))) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a))))))
Compiler

Compiled 5272 to 1799 computations (65.9% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))
0.1b
(*.f64 (sin.f64 b) r)
0.2b
(*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))
0.2b
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))))

series123.0ms (1.1%)

Counts
3 → 84
Calls

3 calls:

98.0ms
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))))
14.0ms
(fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))
10.0ms
(*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))

rewrite85.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
333×prod-diff_binary64
233×expm1-udef_binary64
233×log1p-udef_binary64
202×egg-rr
139×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01354
126748
2358748
Stop Event
node limit
Counts
3 → 202
Calls

3 calls:

79.0ms
(fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))
79.0ms
(*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))
79.0ms
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))))

simplify79.0ms (0.7%)

Algorithm
egg-herbie
Rules
833×times-frac_binary64
667×associate-/l*_binary64
655×fma-def_binary64
174×cancel-sign-sub-inv_binary64
148×fma-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01492011
14752009
215751943
Stop Event
node limit
Counts
286 → 255

prune610.0ms (5.3%)

Pruning

16 alts after pruning (15 fresh and 1 done)

PrunedKeptTotal
New2726278
Fresh7916
Picked011
Done000
Total27916295
Error
0.0b
Counts
295 → 16
Alt Table
StatusErrorProgram
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (*.f64 (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))))))
15.3b
(*.f64 r (*.f64 (sin.f64 b) (/.f64 1 (cos.f64 (+.f64 b a)))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1)))
15.3b
(*.f64 (sin.f64 b) (*.f64 r (/.f64 1 (cos.f64 (+.f64 b a)))))
38.5b
(*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))) 2))
0.7b
(/.f64 (*.f64 (sin.f64 b) r) (+.f64 (fma.f64 (*.f64 (cos.f64 a) (pow.f64 (cbrt.f64 (cos.f64 b)) 2)) (cbrt.f64 (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))))))
29.8b
(/.f64 (/.f64 (*.f64 (sin.f64 b) r) (sqrt.f64 (cos.f64 (+.f64 a b)))) (sqrt.f64 (cos.f64 (+.f64 a b))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (log.f64 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))))
14.7b
(/.f64 (*.f64 (sin.f64 b) r) (+.f64 (fma.f64 (*.f64 (cos.f64 a) (sqrt.f64 (cos.f64 b))) (sqrt.f64 (cos.f64 b)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a))) (pow.f64 (cbrt.f64 (sin.f64 b)) 2) (*.f64 (*.f64 (cbrt.f64 (sin.f64 b)) (sin.f64 a)) (pow.f64 (cbrt.f64 (sin.f64 b)) 2)))))
26.6b
(fma.f64 (/.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 r a) (/.f64 r (/.f64 (cos.f64 b) (sin.f64 b))))
1.2b
(/.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 b) r)) 3) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a)))))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (neg.f64 (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 (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)))))))
15.3b
(*.f64 (/.f64 (sin.f64 b) 1) (/.f64 r (cos.f64 (+.f64 b a))))
0.6b
(/.f64 (*.f64 (sin.f64 b) r) (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 a)) 2) (*.f64 (cbrt.f64 (cos.f64 a)) (cos.f64 b)) (neg.f64 (*.f64 (sin.f64 a) (neg.f64 (sin.f64 b))))) (fma.f64 (sin.f64 a) (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (neg.f64 (sin.f64 b))))))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (*.f64 (sin.f64 a) (neg.f64 (sin.f64 b))))) (fma.f64 (sin.f64 a) (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (neg.f64 (sin.f64 b))))))
Compiler

Compiled 9683 to 2425 computations (75% saved)

regimes2.4s (21.3%)

Accuracy

Total 0.3b remaining (76%)

Threshold costs 0.3b (76%)

Counts
360 → 1
Compiler

Compiled 48778 to 27050 computations (44.5% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01530
12130
22330
32430
Stop Event
saturated

end268.0ms (2.3%)

Compiler

Compiled 526 to 289 computations (45.1% saved)

Profiling

Loading profile data...