Details

Time bar (total: 1.9min)

analyze22.0s (18.8%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.8%0.2%0
0%99.8%0.2%1
0%99.8%0.2%2
0%99.8%0.2%3
0%99.8%0.2%4
0%99.8%0.2%5
0%99.8%0.2%6
0%99.8%0.2%7
0%99.8%0.2%8
2.3%97.4%0.2%9
3.5%96.2%0.2%10
5.3%94.5%0.2%11
6.1%93.6%0.2%12
9.2%90.6%0.2%13
13.8%85.9%0.2%14
Compiler

Compiled 175 to 127 computations (27.4% saved)

sample54.3s (46.4%)

Results
19.5s1705×body4096valid
11.5s1495×body2048valid
10.2s1641×body1024valid
6.2s83×body8192exit
3.1s751×body512valid
3.0s2347×body128valid
828.0ms317×body256valid
Compiler

Compiled 524 to 380 computations (27.5% saved)

simplify22.0ms (0%)

Algorithm
egg-herbie
Rules
637×times-frac_binary64
293×associate-/l/_binary64
243×div-sub_binary64
198×fma-def_binary64
174×distribute-rgt-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
046273
1115265
2345265
31608265
Stop Event
node limit
Counts
1 → 2

prune16.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
52.6b
Counts
3 → 2
Alt Table
StatusErrorProgram
53.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
56.1b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale)) 2) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale) 2)))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale))) (PI.f64)))
Compiler

Compiled 1024 to 708 computations (30.9% saved)

localize48.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
15.2b
(/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale))
25.0b
(cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
25.5b
(-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))))))))
25.6b
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))

series16.5s (14.1%)

Counts
4 → 132
Calls

4 calls:

16.4s
(-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))))))))
160.0ms
(/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale))
3.0ms
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
2.0ms
(cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))

rewrite83.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
444×log1p-expm1-u_binary64
444×expm1-log1p-u_binary64
411×pow1_binary64
147×unpow-prod-down_binary64
145×log-prod_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
039271
1917254
Stop Event
node limit
Counts
4 → 78
Calls

4 calls:

77.0ms
(/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale))
77.0ms
(cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
77.0ms
(-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))))))))
77.0ms
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))

simplify1.5s (1.3%)

Algorithm
egg-herbie
Rules
979×fma-def_binary64
fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
04322282855
Stop Event
node limit
Counts
210 → 185

prune9.2s (7.9%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New42411435
Fresh011
Picked101
Done000
Total42512437
Error
44.2b
Counts
437 → 12
Alt Table
StatusErrorProgram
50.9b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
59.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (/.f64 (-.f64 (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (sqrt.f64 (fma.f64 (pow.f64 b 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 a 4)))))) (pow.f64 y-scale 2)) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
59.6b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 (-.f64 (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 y-scale 2)) (+.f64 (sqrt.f64 (-.f64 (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 x-scale 4)) (fma.f64 3 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 y-scale 4)))) (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2))))) (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 x-scale 2)))) (pow.f64 b 2)) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
54.1b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 1 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
52.8b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (-.f64 1 (*.f64 1/64800 (*.f64 (pow.f64 angle 2) (pow.f64 (PI.f64) 2)))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
55.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (-.f64 1 (*.f64 1/64800 (*.f64 (pow.f64 angle 2) (pow.f64 (PI.f64) 2)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
56.1b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale)) 2) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale) 2)))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale))) (PI.f64)))
55.7b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (-.f64 (*.f64 1/180 (*.f64 angle (PI.f64))) (*.f64 1/34992000 (*.f64 (pow.f64 angle 3) (pow.f64 (PI.f64) 3))))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
54.2b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (fma.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 y-scale -2) (neg.f64 (fma.f64 (pow.f64 (hypot.f64 (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) a) (*.f64 (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 x-scale -2) (hypot.f64 (-.f64 (*.f64 (pow.f64 (hypot.f64 (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) a) (*.f64 (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 x-scale -2)) (*.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 y-scale -2))) (/.f64 (*.f64 (/.f64 2 y-scale) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a)))) (/.f64 x-scale (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
54.1b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (-.f64 1 (*.f64 1/64800 (*.f64 (pow.f64 angle 2) (pow.f64 (PI.f64) 2))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
61.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 (pow.f64 a 2) (-.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 y-scale 2)) (+.f64 (sqrt.f64 (-.f64 (+.f64 (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 x-scale 4)) (fma.f64 3 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))) (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 y-scale 4)))) (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2))))) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 x-scale 2))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
60.4b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (pow.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 y-scale -2)) (fma.f64 (pow.f64 (hypot.f64 (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) a) (*.f64 (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 x-scale -2) (hypot.f64 (-.f64 (*.f64 (pow.f64 (hypot.f64 (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) a) (*.f64 (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 x-scale -2)) (*.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 y-scale -2))) (/.f64 (*.f64 (/.f64 2 y-scale) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a)))) (/.f64 x-scale (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))))))) 3) 1/3) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
Compiler

Compiled 342383 to 240416 computations (29.8% saved)

localize58.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
24.8b
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
25.0b
(cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
25.6b
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
25.6b
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))

series5.0ms (0%)

Counts
2 → 8
Calls

2 calls:

3.0ms
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
2.0ms
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

rewrite38.0ms (0%)

Algorithm
batch-egg-rewrite
Rules
677×log1p-expm1-u_binary64
677×expm1-log1p-u_binary64
324×prod-diff_binary64
144×log1p-udef_binary64
80×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0820
115920
2185020
Stop Event
node limit
Counts
2 → 36
Calls

2 calls:

37.0ms
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
37.0ms
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

simplify28.0ms (0%)

Algorithm
egg-herbie
Rules
725×fma-neg_binary64
606×distribute-rgt-neg-in_binary64
600×distribute-lft-neg-in_binary64
422×associate-*r*_binary64
387×associate-*l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
053216
1159212
2536206
32802206
Stop Event
node limit
Counts
44 → 51

prune1.8s (1.5%)

Pruning

15 alts after pruning (15 fresh and 0 done)

PrunedKeptTotal
New1925197
Fresh11011
Picked101
Done000
Total19415209
Error
44.1b
Counts
209 → 15
Alt Table
StatusErrorProgram
51.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
59.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (/.f64 (-.f64 (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (sqrt.f64 (fma.f64 (pow.f64 b 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 a 4)))))) (pow.f64 y-scale 2)) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
59.6b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 (-.f64 (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 y-scale 2)) (+.f64 (sqrt.f64 (-.f64 (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 x-scale 4)) (fma.f64 3 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 y-scale 4)))) (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2))))) (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 x-scale 2)))) (pow.f64 b 2)) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
51.9b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 1 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
54.1b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (-.f64 1 (*.f64 1/64800 (*.f64 (pow.f64 angle 2) (pow.f64 (PI.f64) 2))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
61.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 (pow.f64 a 2) (-.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 y-scale 2)) (+.f64 (sqrt.f64 (-.f64 (+.f64 (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 x-scale 4)) (fma.f64 3 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))) (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 y-scale 4)))) (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2))))) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 x-scale 2))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
51.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
54.1b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 1 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
52.8b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (-.f64 1 (*.f64 1/64800 (*.f64 (pow.f64 angle 2) (pow.f64 (PI.f64) 2)))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
55.8b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (log.f64 (exp.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
56.1b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale)) 2) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale) 2)))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale))) (PI.f64)))
55.7b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (-.f64 (*.f64 1/180 (*.f64 angle (PI.f64))) (*.f64 1/34992000 (*.f64 (pow.f64 angle 3) (pow.f64 (PI.f64) 3))))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
54.2b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (fma.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 y-scale -2) (neg.f64 (fma.f64 (pow.f64 (hypot.f64 (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) a) (*.f64 (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 x-scale -2) (hypot.f64 (-.f64 (*.f64 (pow.f64 (hypot.f64 (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) a) (*.f64 (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 x-scale -2)) (*.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 y-scale -2))) (/.f64 (*.f64 (/.f64 2 y-scale) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a)))) (/.f64 x-scale (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
53.7b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (-.f64 1 (*.f64 1/64800 (*.f64 (pow.f64 angle 2) (pow.f64 (PI.f64) 2)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
60.4b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (pow.f64 (pow.f64 (-.f64 (*.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 y-scale -2)) (fma.f64 (pow.f64 (hypot.f64 (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) a) (*.f64 (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 x-scale -2) (hypot.f64 (-.f64 (*.f64 (pow.f64 (hypot.f64 (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) a) (*.f64 (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 x-scale -2)) (*.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) b)) 2) (pow.f64 y-scale -2))) (/.f64 (*.f64 (/.f64 2 y-scale) (*.f64 (sin.f64 (*.f64 (*.f64 angle 1/180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a)))) (/.f64 x-scale (cos.f64 (*.f64 (*.f64 angle 1/180) (PI.f64)))))))) 3) 1/3) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
Compiler

Compiled 28354 to 19281 computations (32% saved)

localize56.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
22.1b
(/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale))
24.8b
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
25.6b
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
25.6b
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))

series1.4s (1.2%)

Counts
1 → 60
Calls

1 calls:

1.4s
(/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale))

rewrite42.0ms (0%)

Algorithm
batch-egg-rewrite
Rules
446×log1p-expm1-u_binary64
446×expm1-log1p-u_binary64
422×pow1_binary64
162×log-prod_binary64
129×exp-prod_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
047165
1993159
Stop Event
node limit
Counts
1 → 18
Calls

1 calls:

40.0ms
(/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale))

simplify137.0ms (0.1%)

Algorithm
egg-herbie
Rules
805×times-frac_binary64
446×associate-/l*_binary64
428×associate-/r*_binary64
283×*-commutative_binary64
263×fma-def_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
049813152
1173912008
Stop Event
node limit
Counts
78 → 46

prune856.0ms (0.7%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New2388246
Fresh10414
Picked101
Done000
Total24912261
Error
19.0b
Counts
261 → 12
Alt Table
StatusErrorProgram
56.1b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale)) 2) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale) 2)))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale))) (PI.f64)))
35.9b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 y-scale (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 (pow.f64 x-scale 2) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))) (PI.f64)))
54.1b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 1 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
51.8b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (sqrt.f64 (pow.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2)) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
52.8b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale)) (+.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (hypot.f64 (-.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) b) 2)) (*.f64 x-scale x-scale)) (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) (*.f64 y-scale y-scale))) (*.f64 (/.f64 2 y-scale) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (-.f64 (*.f64 b b) (*.f64 a a))) (/.f64 x-scale (-.f64 1 (*.f64 1/64800 (*.f64 (pow.f64 angle 2) (pow.f64 (PI.f64) 2)))))))))) (/.f64 (*.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
51.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
49.4b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (neg.f64 (*.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2) (+.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) b) 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) a) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2)) (+.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) b) 4) (pow.f64 (*.f64 a (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 4)))))) (pow.f64 x-scale -2))) (/.f64 1 (/.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (/.f64 y-scale (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))))))) (PI.f64)))
59.4b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (-.f64 (+.f64 (*.f64 1/32400 (/.f64 (*.f64 y-scale (*.f64 angle (*.f64 (pow.f64 (PI.f64) 2) (pow.f64 b 2)))) (-.f64 (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 b 2)))) (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 a 2))))))) (*.f64 1/8748000 (/.f64 (*.f64 y-scale (*.f64 (pow.f64 x-scale 2) (*.f64 angle (*.f64 (pow.f64 (PI.f64) 3) (*.f64 (pow.f64 a 2) (pow.f64 b 2)))))) (pow.f64 (-.f64 (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 b 2)))) (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 a 2))))) 2)))) (+.f64 (*.f64 1/8748000 (/.f64 (*.f64 y-scale (*.f64 (pow.f64 x-scale 2) (*.f64 angle (*.f64 (pow.f64 (PI.f64) 3) (pow.f64 b 4))))) (pow.f64 (-.f64 (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 b 2)))) (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 a 2))))) 2))) (+.f64 (/.f64 (*.f64 y-scale (pow.f64 b 2)) (*.f64 angle (-.f64 (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 b 2)))) (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 a 2))))))) (*.f64 1/32400 (/.f64 (*.f64 y-scale (*.f64 angle (*.f64 (pow.f64 a 2) (pow.f64 (PI.f64) 2)))) (-.f64 (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 b 2)))) (*.f64 1/180 (*.f64 (pow.f64 x-scale 2) (*.f64 (PI.f64) (pow.f64 a 2)))))))))))) (PI.f64)))
35.8b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (/.f64 y-scale (*.f64 x-scale x-scale)) (/.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))) (PI.f64)))
38.7b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (/.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 x-scale x-scale)) (neg.f64 (/.f64 y-scale (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))))) (PI.f64)))
38.1b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 -1 (/.f64 (*.f64 y-scale (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 (pow.f64 x-scale 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))))) (PI.f64)))
53.4b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (exp.f64 (log.f64 (*.f64 (/.f64 (neg.f64 (*.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2) (+.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) b) 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) a) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2)) (+.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) b) 4) (pow.f64 (*.f64 a (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 4)))))) (pow.f64 x-scale -2))) (*.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) y-scale))))) (PI.f64)))
Compiler

Compiled 35593 to 23382 computations (34.3% saved)

localize18.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
6.5b
(/.f64 y-scale (*.f64 x-scale x-scale))
14.0b
(*.f64 x-scale (*.f64 (/.f64 y-scale (*.f64 x-scale x-scale)) (/.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
24.8b
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
25.6b
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

series100.0ms (0.1%)

Counts
2 → 60
Calls

2 calls:

76.0ms
(*.f64 x-scale (*.f64 (/.f64 y-scale (*.f64 x-scale x-scale)) (/.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))
23.0ms
(/.f64 y-scale (*.f64 x-scale x-scale))

rewrite60.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
375×prod-diff_binary64
163×add-sqr-sqrt_binary64
159×associate-*r*_binary64
151×add-log-exp_binary64
151×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01529
132129
2447429
Stop Event
node limit
Counts
2 → 59
Calls

2 calls:

58.0ms
(/.f64 y-scale (*.f64 x-scale x-scale))
58.0ms
(*.f64 x-scale (*.f64 (/.f64 y-scale (*.f64 x-scale x-scale)) (/.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))

simplify52.0ms (0%)

Algorithm
egg-herbie
Rules
1014×fma-def_binary64
416×unswap-sqr_binary64
288×associate-*r*_binary64
284×associate-/r/_binary64
266×associate-*l/_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
0501240
11481240
24231240
320691226
439911216
Stop Event
node limit
Counts
119 → 72

prune233.0ms (0.2%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New11112123
Fresh6511
Picked101
Done000
Total11817135
Error
14.1b
Counts
135 → 17
Alt Table
StatusErrorProgram
40.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (/.f64 y-scale (*.f64 x-scale x-scale)) (/.f64 (sqrt.f64 (pow.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180))) 2)) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))) (PI.f64)))
33.0b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (*.f64 y-scale (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 x-scale (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))) (PI.f64)))
56.1b
(*.f64 180 (/.f64 (atan.f64 (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale)) 2) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale) 2)))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale))) (PI.f64)))
44.4b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (expm1.f64 (log1p.f64 (*.f64 y-scale (pow.f64 x-scale -2)))) (/.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))) (PI.f64)))
45.1b
(*.f64 180 (/.f64 (atan.f64 (exp.f64 (log.f64 (*.f64 (tan.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (/.f64 (*.f64 x-scale y-scale) (*.f64 x-scale x-scale)))))) (PI.f64)))
41.1b
(*.f64 180 (/.f64 (atan.f64 (log.f64 (pow.f64 (pow.f64 (pow.f64 (exp.f64 y-scale) (pow.f64 x-scale -2)) (tan.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) x-scale))) (PI.f64)))
38.7b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (/.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 x-scale x-scale)) (neg.f64 (/.f64 y-scale (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))))) (PI.f64)))
36.0b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (/.f64 y-scale (*.f64 x-scale x-scale)) (/.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 1)))) (PI.f64)))
38.1b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 -1 (/.f64 (*.f64 y-scale (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 (pow.f64 x-scale 2) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))))))) (PI.f64)))
35.9b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (/.f64 y-scale (*.f64 x-scale x-scale)) (/.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))))))))) (PI.f64)))
36.1b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (pow.f64 (cbrt.f64 (*.f64 y-scale (pow.f64 x-scale -2))) 3) (/.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))) (PI.f64)))
42.5b
(*.f64 180 (/.f64 (atan.f64 (pow.f64 (pow.f64 (*.f64 (tan.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (/.f64 (*.f64 x-scale y-scale) (*.f64 x-scale x-scale))) 3) 1/3)) (PI.f64)))
31.1b
(*.f64 180 (/.f64 (atan.f64 (*.f64 1/180 (*.f64 (/.f64 (*.f64 y-scale (PI.f64)) x-scale) angle))) (PI.f64)))
53.4b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (exp.f64 (log.f64 (*.f64 (/.f64 (neg.f64 (*.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2) (+.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) b) 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) a) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 2)) (+.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) b) 4) (pow.f64 (*.f64 a (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) 4)))))) (pow.f64 x-scale -2))) (*.f64 (sin.f64 (*.f64 (PI.f64) (*.f64 angle 1/180))) (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a)))))) y-scale))))) (PI.f64)))
51.3b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (/.f64 (*.f64 -1 (/.f64 (fma.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (pow.f64 b 2) (sqrt.f64 (fma.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 4) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))))))) (pow.f64 x-scale 2))) (/.f64 (*.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (*.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))))) y-scale)))) (PI.f64)))
35.5b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (/.f64 y-scale (*.f64 x-scale x-scale)) (/.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 angle (*.f64 (PI.f64) 1/180)))) 3) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))) (PI.f64)))
33.6b
(*.f64 180 (/.f64 (atan.f64 (*.f64 x-scale (*.f64 (*.f64 (/.f64 (pow.f64 (cbrt.f64 y-scale) 2) x-scale) (/.f64 (cbrt.f64 y-scale) x-scale)) (/.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))))) (PI.f64)))
Compiler

Compiled 4465 to 2778 computations (37.8% saved)

regimes6.4s (5.4%)

Accuracy

Total 14.9b remaining (51%)

Threshold costs 0b (0%)

Counts
141 → 3
Compiler

Compiled 191950 to 133461 computations (30.5% saved)

bsearch1.5s (1.3%)

Steps
ItersRangePoint
6
1.8740038994595344e-16
2.874187689648267e-15
2.9592549622702613e-16
10
-1.5968919011720093e+31
-45577076840550154000.0
-7.991062792573825e+26
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify5.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
043117
157117
265117
381117
492117
5100117
6103117
Stop Event
saturated

end454.0ms (0.4%)

Compiler

Compiled 982 to 714 computations (27.3% saved)

Profiling

Loading profile data...