Details

Time bar (total: 12.3s)

analyze1.5s (12.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.4s (35.9%)

Results
2.7s3586×body1024valid
589.0ms1362×body512valid
527.0ms2444×body128valid
325.0ms225×body2048valid
191.0ms639×body256valid
Compiler

Compiled 38 to 26 computations (31.6% saved)

simplify45.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0914
11314
21714
32014
42114
52114

prune2.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 45 to 27 computations (40% saved)

localize8.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

series68.0ms (0.6%)

Counts
3 → 68
Calls

3 calls:

57.0ms
(/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b)))
7.0ms
(*.f64 r (sin.f64 b))
4.0ms
(cos.f64 (+.f64 a b))

rewrite100.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
701×prod-diff_binary64
211×fma-def_binary64
196×expm1-udef_binary64
196×log1p-udef_binary64
129×egg-rr
Counts
3 → 129
Calls

3 calls:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0926
120026
2279926
3479226
4500926

simplify63.0ms (0.5%)

Algorithm
egg-herbie
Rules
833×times-frac_binary64
659×associate-/l*_binary64
533×fma-def_binary64
310×associate-/r*_binary64
177×fma-neg_binary64
Counts
197 → 167
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01311221
13871211
213521163
349131163
449721163

prune218.0ms (1.8%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New15116167
Fresh000
Picked101
Done000
Total15216168
Error
0.0b
Counts
168 → 16
Alt Table
StatusErrorProgram
0.4b
(/.f64 (*.f64 r (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)))))))
13.0b
(*.f64 (sin.f64 b) (*.f64 r (/.f64 1 (cos.f64 (+.f64 a b)))))
31.6b
(/.f64 (*.f64 r (sin.f64 b)) (pow.f64 (pow.f64 (cos.f64 (+.f64 a b)) 3) 1/3))
13.1b
(/.f64 (*.f64 r (sin.f64 b)) (log.f64 (exp.f64 (cos.f64 (+.f64 a b)))))
12.9b
(/.f64 (*.f64 r (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)))) (cos.f64 (-.f64 a b))))
42.1b
(/.f64 (*.f64 r (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 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))) (fma.f64 (neg.f64 (sqrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b))) (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))))
0.3b
(/.f64 (*.f64 r (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)))))
32.9b
(+.f64 (fma.f64 (/.f64 b (cos.f64 a)) r (/.f64 (*.f64 (sin.f64 a) (*.f64 b (*.f64 b r))) (pow.f64 (cos.f64 a) 2))) (*.f64 (/.f64 (*.f64 (pow.f64 b 3) r) (cos.f64 a)) (+.f64 1/3 (/.f64 (pow.f64 (sin.f64 a) 2) (pow.f64 (cos.f64 a) 2)))))
13.0b
(pow.f64 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 r (sin.f64 b))) -1)
29.4b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 1 (*.f64 (cos.f64 a) (cos.f64 b)) (neg.f64 (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))) (fma.f64 (neg.f64 (sqrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b))) (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))))
0.4b
(/.f64 (*.f64 r (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))))))
13.0b
(*.f64 r (/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b))))
13.4b
(/.f64 (*.f64 r (sin.f64 b)) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 3))
26.7b
(/.f64 (*.f64 r (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)))))
40.7b
(cbrt.f64 (pow.f64 (/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b))) 3))
0.4b
(/.f64 (*.f64 r (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))))))))
Compiler

Compiled 5058 to 1600 computations (68.4% saved)

localize18.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series193.0ms (1.6%)

Counts
3 → 84
Calls

3 calls:

160.0ms
(/.f64 (*.f64 r (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))

rewrite111.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
401×fma-neg_binary64
288×expm1-udef_binary64
288×log1p-udef_binary64
180×add-sqr-sqrt_binary64
166×log1p-expm1-u_binary64
Counts
3 → 96
Calls

3 calls:

109.0ms
(*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1))
109.0ms
(/.f64 (*.f64 r (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)))))
108.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: 1 (0.0ms)

IterNodesCost
01872
135656
2410356
3495956
4530156

simplify72.0ms (0.6%)

Algorithm
egg-herbie
Rules
833×times-frac_binary64
664×associate-/l*_binary64
502×fma-def_binary64
310×associate-/r*_binary64
190×fma-neg_binary64
Counts
180 → 130
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01321567
13841557
213091497
348851493
449581493

prune1.0s (8.3%)

Pruning

18 alts after pruning (17 fresh and 1 done)

PrunedKeptTotal
New1904194
Fresh21315
Picked011
Done000
Total19218210
Error
0.0b
Counts
210 → 18
Alt Table
StatusErrorProgram
0.4b
(/.f64 (*.f64 r (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)))))))
13.0b
(*.f64 (sin.f64 b) (*.f64 r (/.f64 1 (cos.f64 (+.f64 a b)))))
0.4b
(/.f64 (*.f64 r (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 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))
13.0b
(*.f64 r (/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b))))
13.4b
(/.f64 (*.f64 r (sin.f64 b)) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 3))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log.f64 (pow.f64 (exp.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)))))
31.6b
(/.f64 (*.f64 r (sin.f64 b)) (pow.f64 (pow.f64 (cos.f64 (+.f64 a b)) 3) 1/3))
0.3b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (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)))))
13.1b
(/.f64 (*.f64 r (sin.f64 b)) (log.f64 (exp.f64 (cos.f64 (+.f64 a b)))))
12.7b
(*.f64 (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (pow.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a))) 2) (pow.f64 (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 0) 2))) (-.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 0)))
40.7b
(cbrt.f64 (pow.f64 (/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b))) 3))
12.9b
(/.f64 (*.f64 r (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)))) (cos.f64 (-.f64 a b))))
42.1b
(/.f64 (*.f64 r (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 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))) (fma.f64 (neg.f64 (sqrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b))) (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))))
0.3b
(/.f64 (*.f64 r (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)))))
32.9b
(+.f64 (fma.f64 (/.f64 b (cos.f64 a)) r (/.f64 (*.f64 (sin.f64 a) (*.f64 b (*.f64 b r))) (pow.f64 (cos.f64 a) 2))) (*.f64 (/.f64 (*.f64 (pow.f64 b 3) r) (cos.f64 a)) (+.f64 1/3 (/.f64 (pow.f64 (sin.f64 a) 2) (pow.f64 (cos.f64 a) 2)))))
13.0b
(pow.f64 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 r (sin.f64 b))) -1)
0.4b
(/.f64 (*.f64 r (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))))))
26.7b
(/.f64 (*.f64 r (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)))))
Compiler

Compiled 8175 to 3284 computations (59.8% saved)

localize23.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (sin.f64 b) (sin.f64 a))
0.2b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (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)))))
3.4b
(-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1)
54.9b
(fma.f64 (neg.f64 (sin.f64 b)) (*.f64 (sin.f64 a) 1) (*.f64 (sin.f64 b) (*.f64 (sin.f64 a) 1)))

series1.3s (10.6%)

Counts
3 → 76
Calls

3 calls:

855.0ms
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (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)))))
430.0ms
(-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1)
9.0ms
(*.f64 (sin.f64 b) (sin.f64 a))

rewrite90.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
904×prod-diff_binary64
209×add-sqr-sqrt_binary64
197×expm1-log1p-u_binary64
196×log1p-expm1-u_binary64
192×add-log-exp_binary64
Counts
3 → 144
Calls

3 calls:

87.0ms
(*.f64 (sin.f64 b) (sin.f64 a))
87.0ms
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (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)))))
87.0ms
(-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1)
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02262
141055
2442540
3576040

simplify87.0ms (0.7%)

Algorithm
egg-herbie
Rules
833×times-frac_binary64
664×associate-/l*_binary64
499×fma-def_binary64
310×associate-/r*_binary64
184×fma-neg_binary64
Counts
220 → 134
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01301811
13791793
212981709
348621695
449841695
549771695

prune362.0ms (3%)

Pruning

18 alts after pruning (17 fresh and 1 done)

PrunedKeptTotal
New1621163
Fresh01616
Picked101
Done011
Total16318181
Error
0.0b
Counts
181 → 18
Alt Table
StatusErrorProgram
0.4b
(/.f64 (*.f64 r (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)))))))
13.0b
(*.f64 (sin.f64 b) (*.f64 r (/.f64 1 (cos.f64 (+.f64 a b)))))
0.4b
(/.f64 (*.f64 r (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 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))
13.0b
(*.f64 r (/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b))))
13.4b
(/.f64 (*.f64 r (sin.f64 b)) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 3))
0.4b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (log.f64 (pow.f64 (exp.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)))))
31.6b
(/.f64 (*.f64 r (sin.f64 b)) (pow.f64 (pow.f64 (cos.f64 (+.f64 a b)) 3) 1/3))
13.1b
(/.f64 (*.f64 r (sin.f64 b)) (log.f64 (exp.f64 (cos.f64 (+.f64 a b)))))
12.7b
(*.f64 (/.f64 (*.f64 (sin.f64 b) r) (-.f64 (pow.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a))) 2) (pow.f64 (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 0) 2))) (-.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (*.f64 (sin.f64 b) (sin.f64 a))) (*.f64 (*.f64 (sin.f64 b) (sin.f64 a)) 0)))
40.7b
(cbrt.f64 (pow.f64 (/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b))) 3))
12.9b
(/.f64 (*.f64 r (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)))) (cos.f64 (-.f64 a b))))
42.1b
(/.f64 (*.f64 r (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 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))) (fma.f64 (neg.f64 (sqrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b))) (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))))
0.3b
(/.f64 (*.f64 r (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)))))
32.9b
(+.f64 (fma.f64 (/.f64 b (cos.f64 a)) r (/.f64 (*.f64 (sin.f64 a) (*.f64 b (*.f64 b r))) (pow.f64 (cos.f64 a) 2))) (*.f64 (/.f64 (*.f64 (pow.f64 b 3) r) (cos.f64 a)) (+.f64 1/3 (/.f64 (pow.f64 (sin.f64 a) 2) (pow.f64 (cos.f64 a) 2)))))
13.0b
(pow.f64 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 r (sin.f64 b))) -1)
0.4b
(/.f64 (*.f64 r (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.3b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1))) 0))
26.7b
(/.f64 (*.f64 r (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)))))
Compiler

Compiled 6915 to 2684 computations (61.2% saved)

localize18.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 r (sin.f64 b))
0.2b
(*.f64 (sin.f64 b) (sin.f64 a))
0.2b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1))) 0))
3.4b
(-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1)

series838.0ms (6.8%)

Counts
1 → 36
Calls

1 calls:

838.0ms
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1))) 0))

rewrite102.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
422×fma-neg_binary64
284×log1p-udef_binary64
283×expm1-udef_binary64
177×add-sqr-sqrt_binary64
170×expm1-log1p-u_binary64
Counts
1 → 46
Calls

1 calls:

101.0ms
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1))) 0))
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01926
135814
2412214
3497314
4530814

simplify40.0ms (0.3%)

Algorithm
egg-herbie
Rules
833×times-frac_binary64
664×associate-/l*_binary64
455×associate-*r*_binary64
390×associate-*l*_binary64
355×fma-def_binary64
Counts
82 → 62
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0971211
12711209
29621173
354411173

prune303.0ms (2.5%)

Pruning

18 alts after pruning (16 fresh and 2 done)

PrunedKeptTotal
New1623165
Fresh31316
Picked011
Done011
Total16518183
Error
0.0b
Counts
183 → 18
Alt Table
StatusErrorProgram
0.4b
(/.f64 (*.f64 r (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 (+.f64 1 (expm1.f64 (*.f64 (sin.f64 b) (sin.f64 a))))))))
13.0b
(*.f64 r (/.f64 1 (/.f64 (cos.f64 (+.f64 a b)) (sin.f64 b))))
26.7b
(/.f64 (*.f64 r (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)))))
13.1b
(*.f64 (/.f64 (*.f64 r (sin.f64 b)) (pow.f64 (cos.f64 (-.f64 b a)) 2)) (cos.f64 (-.f64 b a)))
31.6b
(/.f64 (*.f64 r (sin.f64 b)) (pow.f64 (pow.f64 (cos.f64 (+.f64 a b)) 3) 1/3))
13.1b
(/.f64 (*.f64 r (sin.f64 b)) (log.f64 (exp.f64 (cos.f64 (+.f64 a b)))))
40.7b
(cbrt.f64 (pow.f64 (/.f64 (*.f64 r (sin.f64 b)) (cos.f64 (+.f64 a b))) 3))
13.0b
(*.f64 (/.f64 r (cos.f64 (-.f64 b a))) (sin.f64 b))
12.9b
(/.f64 (*.f64 r (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)))) (cos.f64 (-.f64 a b))))
42.1b
(/.f64 (*.f64 r (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 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))) (fma.f64 (neg.f64 (sqrt.f64 (sin.f64 b))) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b))) (*.f64 (sqrt.f64 (sin.f64 b)) (*.f64 (sin.f64 a) (sqrt.f64 (sin.f64 b)))))))
0.3b
(/.f64 (*.f64 r (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)))))
32.9b
(+.f64 (fma.f64 (/.f64 b (cos.f64 a)) r (/.f64 (*.f64 (sin.f64 a) (*.f64 b (*.f64 b r))) (pow.f64 (cos.f64 a) 2))) (*.f64 (/.f64 (*.f64 (pow.f64 b 3) r) (cos.f64 a)) (+.f64 1/3 (/.f64 (pow.f64 (sin.f64 a) 2) (pow.f64 (cos.f64 a) 2)))))
13.0b
(pow.f64 (/.f64 (cos.f64 (+.f64 a b)) (*.f64 r (sin.f64 b))) -1)
0.3b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (cbrt.f64 (*.f64 (pow.f64 (sin.f64 a) 3) (pow.f64 (sin.f64 b) 3))))) 0))
0.4b
(/.f64 (*.f64 r (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.4b
(/.f64 (*.f64 r (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))))))
13.4b
(/.f64 (*.f64 r (sin.f64 b)) (pow.f64 (cbrt.f64 (cos.f64 (+.f64 a b))) 3))
0.3b
(/.f64 (*.f64 r (sin.f64 b)) (+.f64 (fma.f64 (cos.f64 a) (cos.f64 b) (neg.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 b) (sin.f64 a)))) 1))) 0))
Compiler

Compiled 4703 to 1993 computations (57.6% saved)

regimes921.0ms (7.5%)

Accuracy

Total 0.2b remaining (74.4%)

Threshold costs 0.2b (74.4%)

Counts
187 → 1
Compiler

Compiled 20492 to 12308 computations (39.9% 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
02150
13450
24650
34950
45050
54850

end368.0ms (3%)

Compiler

Compiled 583 to 324 computations (44.4% saved)

Profiling

Loading profile data...