Details

Time bar (total: 10.6s)

analyze1.5s (13.7%)

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.1s (38.4%)

Results
2.6s3600×body1024valid
599.0ms1458×body512valid
417.0ms2388×body128valid
297.0ms207×body2048valid
175.0ms603×body256valid
1.0msbody1024invalid
Compiler

Compiled 38 to 26 computations (31.6% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
associate-/r/_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0914
11314
21714
32014
42114
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
16.9b
Counts
3 → 2
Alt Table
StatusErrorProgram
16.9b
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a))))
17.0b
(/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))
Compiler

Compiled 69 to 44 computations (36.2% saved)

localize9.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(sin.f64 b)
0.1b
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a))))
0.2b
(/.f64 (sin.f64 b) (cos.f64 (+.f64 b a)))
4.2b
(cos.f64 (+.f64 b a))

series105.0ms (1%)

Counts
4 → 88
Calls

4 calls:

58.0ms
(*.f64 r (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a))))
42.0ms
(/.f64 (sin.f64 b) (cos.f64 (+.f64 b a)))
4.0ms
(cos.f64 (+.f64 b a))
1.0ms
(sin.f64 b)

rewrite61.0ms (0.6%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0934
120034
2286234
Stop Event
node limit
Counts
4 → 138
Calls

4 calls:

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

simplify49.0ms (0.5%)

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

Useful iterations: 2 (0.0ms)

IterNodesCost
01701746
15151744
218401678
Stop Event
node limit
Counts
226 → 192

prune286.0ms (2.7%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New17616192
Fresh011
Picked101
Done000
Total17717194
Error
0.1b
Counts
194 → 17
Alt Table
StatusErrorProgram
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 b) (cos.f64 a)) 3) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)) (fma.f64 (*.f64 (cos.f64 b) (cos.f64 a)) (*.f64 (cos.f64 b) (cos.f64 a)) (fma.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (*.f64 (cos.f64 b) (cos.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a))))))))
31.6b
(fma.f64 1/2 (*.f64 (/.f64 (sin.f64 b) (cos.f64 b)) (*.f64 (*.f64 a a) r)) (fma.f64 (/.f64 (sin.f64 b) (cos.f64 b)) r (fma.f64 (/.f64 (pow.f64 (sin.f64 b) 2) (pow.f64 (cos.f64 b) 2)) (*.f64 a r) (/.f64 (pow.f64 (sin.f64 b) 3) (/.f64 (pow.f64 (cos.f64 b) 3) (*.f64 (*.f64 a a) r))))))
24.0b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (sqrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (sqrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
26.2b
(/.f64 (sin.f64 b) (/.f64 (cos.f64 b) r))
0.9b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a)))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
0.3b
(*.f64 r (/.f64 (sin.f64 b) (-.f64 (*.f64 (cos.f64 b) (cos.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)))))
31.9b
(+.f64 (/.f64 (*.f64 b r) (cos.f64 a)) (+.f64 (/.f64 (*.f64 (sin.f64 a) (*.f64 r (pow.f64 b 2))) (pow.f64 (cos.f64 a) 2)) (+.f64 (*.f64 2/3 (/.f64 (*.f64 (sin.f64 a) (*.f64 (pow.f64 b 4) r)) (pow.f64 (cos.f64 a) 2))) (+.f64 (/.f64 (*.f64 (pow.f64 (sin.f64 a) 3) (*.f64 (pow.f64 b 4) r)) (pow.f64 (cos.f64 a) 4)) (+.f64 (/.f64 (*.f64 (pow.f64 (sin.f64 a) 2) (*.f64 (pow.f64 b 3) r)) (pow.f64 (cos.f64 a) 3)) (*.f64 1/3 (/.f64 (*.f64 (pow.f64 b 3) r) (cos.f64 a))))))))
0.9b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a)))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (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.8b
(cbrt.f64 (pow.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a))) r) 3))
17.0b
(/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))
0.5b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (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))))))
38.3b
(pow.f64 (sqrt.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a))) r)) 2)
39.3b
(*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a)))) 2))
17.1b
(/.f64 1 (/.f64 (cos.f64 (+.f64 b a)) (*.f64 (sin.f64 b) r)))
0.5b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (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)))))))))
32.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (sin.f64 a)) (sqrt.f64 (sin.f64 b))))) (fma.f64 (neg.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (sin.f64 a))) (sqrt.f64 (sin.f64 b)) (*.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (sin.f64 a)) (sqrt.f64 (sin.f64 b)))))))
Compiler

Compiled 5743 to 2004 computations (65.1% saved)

localize32.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))
0.2b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 b) (cos.f64 a) (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 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))

series198.0ms (1.9%)

Counts
4 → 100
Calls

4 calls:

110.0ms
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
64.0ms
(/.f64 (sin.f64 b) (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a)))))
14.0ms
(fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))
9.0ms
(*.f64 (sin.f64 b) (sin.f64 a))

rewrite139.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
2377139
Stop Event
node limit
Counts
4 → 441
Calls

4 calls:

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

simplify70.0ms (0.7%)

Algorithm
egg-herbie
Rules
840×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 → 509

prune932.0ms (8.7%)

Pruning

15 alts after pruning (15 fresh and 0 done)

PrunedKeptTotal
New5009509
Fresh10616
Picked101
Done000
Total51115526
Error
0.0b
Counts
526 → 15
Alt Table
StatusErrorProgram
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (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))))))))
28.2b
(fma.f64 (/.f64 (sin.f64 b) (cos.f64 b)) r (*.f64 (/.f64 a (/.f64 (pow.f64 (cos.f64 b) 2) (pow.f64 (sin.f64 b) 2))) r))
0.6b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cos.f64 b) (cbrt.f64 (pow.f64 (cos.f64 a) 2))) (cbrt.f64 (cos.f64 a)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b)) (pow.f64 (cbrt.f64 (sin.f64 a)) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b))) (pow.f64 (cbrt.f64 (sin.f64 a)) 2) (*.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b)) (pow.f64 (cbrt.f64 (sin.f64 a)) 2))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 b) (cos.f64 a)) 3) (pow.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 3)) (fma.f64 (*.f64 (cos.f64 b) (cos.f64 a)) (*.f64 (cos.f64 b) (cos.f64 a)) (fma.f64 (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a)) (*.f64 (*.f64 (cos.f64 b) (cos.f64 a)) (*.f64 (sin.f64 b) (sin.f64 a))))))))
0.9b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a)))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))
0.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (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)))))))
17.0b
(*.f64 r (/.f64 (sin.f64 b) (expm1.f64 (log1p.f64 (cos.f64 (-.f64 b a))))))
38.3b
(pow.f64 (sqrt.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a))) r)) 2)
39.3b
(*.f64 r (pow.f64 (sqrt.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a)))) 2))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.4b
(/.f64 (sin.f64 b) (/.f64 (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 a) (sin.f64 b))) r))
0.7b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 b)) 2) (*.f64 (cbrt.f64 (cos.f64 b)) (cos.f64 a)) (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 (pow.f64 (cbrt.f64 (cos.f64 b)) 2) (*.f64 (cbrt.f64 (cos.f64 b)) (cos.f64 a)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b)) (pow.f64 (cbrt.f64 (sin.f64 a)) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b))) (pow.f64 (cbrt.f64 (sin.f64 a)) 2) (*.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b)) (pow.f64 (cbrt.f64 (sin.f64 a)) 2))))))
39.8b
(cbrt.f64 (pow.f64 (*.f64 (/.f64 (sin.f64 b) (cos.f64 (+.f64 b a))) r) 3))
32.4b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (cos.f64 b) (cos.f64 a) (neg.f64 (*.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (sin.f64 a)) (sqrt.f64 (sin.f64 b))))) (fma.f64 (neg.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (sin.f64 a))) (sqrt.f64 (sin.f64 b)) (*.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (sin.f64 a)) (sqrt.f64 (sin.f64 b)))))))
Compiler

Compiled 20128 to 5109 computations (74.6% saved)

localize12.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (sin.f64 b) r)
0.2b
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
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))))

series128.0ms (1.2%)

Counts
3 → 36
Calls

3 calls:

105.0ms
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
15.0ms
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
7.0ms
(*.f64 (sin.f64 b) r)

rewrite63.0ms (0.6%)

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 (sin.f64 b) r)
60.0ms
(-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a)))
60.0ms
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))

simplify33.0ms (0.3%)

Algorithm
egg-herbie
Rules
833×times-frac_binary64
666×associate-/l*_binary64
537×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 → 155

prune326.0ms (3.1%)

Pruning

11 alts after pruning (10 fresh and 1 done)

PrunedKeptTotal
New1936199
Fresh10414
Picked011
Done000
Total20311214
Error
0.0b
Counts
214 → 11
Alt Table
StatusErrorProgram
1.3b
(/.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 (fma.f64 (cos.f64 b) (cos.f64 a) (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))))))))
28.2b
(fma.f64 (/.f64 (sin.f64 b) (cos.f64 b)) r (*.f64 (/.f64 a (/.f64 (pow.f64 (cos.f64 b) 2) (pow.f64 (sin.f64 b) 2))) r))
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)))))))
0.3b
(*.f64 (/.f64 r (fma.f64 (sin.f64 b) (neg.f64 (sin.f64 a)) (*.f64 (cos.f64 a) (cos.f64 b)))) (sin.f64 b))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (/.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))) 3)) (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (-.f64 (*.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))))))))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.6b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cos.f64 b) (cbrt.f64 (pow.f64 (cos.f64 a) 2))) (cbrt.f64 (cos.f64 a)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b)) (pow.f64 (cbrt.f64 (sin.f64 a)) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b))) (pow.f64 (cbrt.f64 (sin.f64 a)) 2) (*.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b)) (pow.f64 (cbrt.f64 (sin.f64 a)) 2))))))
0.9b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a)))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (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)))))
17.1b
(*.f64 (/.f64 (sin.f64 b) (cbrt.f64 (pow.f64 (cos.f64 (+.f64 b a)) 2))) (/.f64 r (cbrt.f64 (cos.f64 (+.f64 b a)))))
Compiler

Compiled 5047 to 1646 computations (67.4% saved)

localize14.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series222.0ms (2.1%)

Counts
4 → 104
Calls

4 calls:

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

rewrite54.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
669×prod-diff_binary64
144×add-sqr-sqrt_binary64
132×log1p-expm1-u_binary64
132×expm1-log1p-u_binary64
131×add-cbrt-cube_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01373
127237
2368737
Stop Event
node limit
Counts
4 → 101
Calls

4 calls:

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

simplify59.0ms (0.6%)

Algorithm
egg-herbie
Rules
914×fma-def_binary64
478×associate-/r*_binary64
217×associate-/r/_binary64
193×cancel-sign-sub-inv_binary64
187×associate-*l/_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01892839
15992821
221302714
Stop Event
node limit
Counts
205 → 163

prune223.0ms (2.1%)

Pruning

10 alts after pruning (9 fresh and 1 done)

PrunedKeptTotal
New1621163
Fresh189
Picked101
Done011
Total16410174
Error
0.0b
Counts
174 → 10
Alt Table
StatusErrorProgram
1.3b
(/.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 (fma.f64 (cos.f64 b) (cos.f64 a) (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))))))))
0.4b
(/.f64 (*.f64 (sin.f64 b) r) (/.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 3) (pow.f64 (*.f64 (sin.f64 b) (neg.f64 (sin.f64 a))) 3)) (+.f64 (pow.f64 (*.f64 (cos.f64 a) (cos.f64 b)) 2) (-.f64 (*.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))))))))
0.3b
(/.f64 (*.f64 (sin.f64 b) r) (-.f64 (*.f64 (cos.f64 a) (cos.f64 b)) (*.f64 (sin.f64 b) (sin.f64 a))))
0.6b
(*.f64 r (/.f64 (sin.f64 b) (+.f64 (fma.f64 (*.f64 (cos.f64 b) (cbrt.f64 (pow.f64 (cos.f64 a) 2))) (cbrt.f64 (cos.f64 a)) (neg.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b)) (pow.f64 (cbrt.f64 (sin.f64 a)) 2)))) (fma.f64 (neg.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b))) (pow.f64 (cbrt.f64 (sin.f64 a)) 2) (*.f64 (*.f64 (cbrt.f64 (sin.f64 a)) (sin.f64 b)) (pow.f64 (cbrt.f64 (sin.f64 a)) 2))))))
0.4b
(*.f64 (/.f64 r (fma.f64 (sin.f64 b) (neg.f64 (sin.f64 a)) (log1p.f64 (expm1.f64 (*.f64 (cos.f64 a) (cos.f64 b)))))) (sin.f64 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)))))))
0.9b
(*.f64 r (/.f64 (sin.f64 b) (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a)))) (cbrt.f64 (*.f64 (cos.f64 b) (cos.f64 a))) (neg.f64 (*.f64 (sin.f64 b) (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)))))
17.1b
(*.f64 (/.f64 (sin.f64 b) (cbrt.f64 (pow.f64 (cos.f64 (+.f64 b a)) 2))) (/.f64 r (cbrt.f64 (cos.f64 (+.f64 b a)))))
Compiler

Compiled 3721 to 1460 computations (60.8% saved)

regimes1.9s (17.7%)

Accuracy

Total 0.3b remaining (79.8%)

Threshold costs 0.3b (79.8%)

Counts
397 → 1
Compiler

Compiled 33956 to 20914 computations (38.4% 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
01326
11926
22126
32226
Stop Event
saturated

end199.0ms (1.9%)

Compiler

Compiled 367 to 203 computations (44.7% saved)

Profiling

Loading profile data...