Details

Time bar (total: 1.3min)

analyze12.5s (16.1%)

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
0%99.8%0.2%9
0%99.8%0.2%10
6.2%93.5%0.2%11
6.2%93.5%0.2%12
7.8%92%0.2%13
8.6%91.2%0.2%14
Compiler

Compiled 115 to 84 computations (27% saved)

sample49.7s (63.9%)

Results
12.5s1426×body4096valid
9.4s1768×body2048valid
7.5s863×body4096invalid
6.7s1161×body2048invalid
3.5s926×body1024valid
2.8s3539×body128valid
2.5s708×body1024invalid
1.3s68×body8192valid
837.0ms376×body512valid
745.0ms1084×body128invalid
689.0ms36×body8192invalid
664.0ms292×body512invalid
211.0ms153×body256valid
173.0ms132×body256invalid
Compiler

Compiled 344 to 251 computations (27% saved)

simplify67.0ms (0.1%)

Algorithm
egg-herbie
Rules
600×associate-/l/_binary64
529×associate-/r/_binary64
282×div-sub_binary64
263×distribute-rgt-in_binary64
260×distribute-lft-in_binary64
Counts
1 → 2
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
040175
1104173
2316173
31431170
44673170
55335170

prune11.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
40.4b
Counts
3 → 2
Alt Table
StatusErrorProgram
43.1b
(fma.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 (+.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) -4) (*.f64 (*.f64 (/.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 x-scale y-scale)) (/.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.f64 x-scale y-scale))) (*.f64 4 (*.f64 (*.f64 (-.f64 (*.f64 b b) (*.f64 a a)) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 (-.f64 (*.f64 b b) (*.f64 a a)) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))))))))
41.3b
(-.f64 (*.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) (/.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)) (*.f64 (*.f64 4 (/.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)))
Compiler

Compiled 670 to 459 computations (31.5% saved)

localize40.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
11.9b
(*.f64 (*.f64 4 (/.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))
26.1b
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
26.4b
(cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
32.2b
(-.f64 (*.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) (/.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)) (*.f64 (*.f64 4 (/.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)))

series4.2s (5.4%)

Counts
4 → 144
Calls

4 calls:

3.3s
(-.f64 (*.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) (/.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)) (*.f64 (*.f64 4 (/.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)))
891.0ms
(*.f64 (*.f64 4 (/.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))
5.0ms
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
3.0ms
(cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))

rewrite246.0ms (0.3%)

Algorithm
egg-rewrite
Rules
47×egg
20×egg
18×egg
18×egg
Counts
4 → 103
Calls

4 calls:

77.0ms
(*.f64 (*.f64 4 (/.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))
74.0ms
(-.f64 (*.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) (/.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)) (*.f64 (*.f64 4 (/.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)))
45.0ms
(cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
43.0ms
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
040133
1914127
25200127
0710
114810
2173610
3495310
0710
114810
2173610
3495310
03085
166579
2495979
3500279

simplify302.0ms (0.4%)

Algorithm
egg-herbie
Rules
465×times-frac_binary64
431×fma-neg_binary64
357×associate-/l*_binary64
342×associate-*r*_binary64
277×associate-/r*_binary64
Counts
247 → 169
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
029718027
1102016993
2486616993
3519516993

prune1.5s (2%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New3169325
Fresh101
Picked101
Done000
Total3189327
Error
24.2b
Counts
327 → 9
Alt Table
StatusErrorProgram
44.8b
(+.f64 (-.f64 (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale) 2) (*.f64 (*.f64 4 (/.f64 (pow.f64 (hypot.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 x-scale x-scale))) (/.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 y-scale y-scale)))) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 4 (/.f64 (pow.f64 (hypot.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 x-scale x-scale))) (/.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 y-scale y-scale))))) (sqrt.f64 (*.f64 (*.f64 4 (/.f64 (pow.f64 (hypot.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 x-scale x-scale))) (/.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 y-scale y-scale)))) (*.f64 (*.f64 4 (/.f64 (pow.f64 (hypot.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 x-scale x-scale))) (/.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 y-scale y-scale)))))
37.1b
(neg.f64 (/.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))) (*.f64 x-scale x-scale)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (*.f64 a a) (*.f64 b b))) (*.f64 x-scale x-scale)) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 b b)))) (*.f64 x-scale x-scale))))) (*.f64 y-scale y-scale)))
41.5b
(-.f64 (*.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) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 3)) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale)) (*.f64 (*.f64 4 (/.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)))
37.4b
(neg.f64 (*.f64 (*.f64 a a) (fma.f64 4 (/.f64 (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))) (fma.f64 4 (/.f64 (*.f64 (*.f64 b b) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 b b))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))))))))
41.0b
(-.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 b 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))) (+.f64 (*.f64 8 (/.f64 (*.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 y-scale 2) (pow.f64 x-scale 2)))) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (pow.f64 a 2) (pow.f64 b 2))) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2)))) (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 b 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))))))
41.5b
(-.f64 (*.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) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) 2))) x-scale) y-scale)) (*.f64 (*.f64 4 (/.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)))
37.6b
(*.f64 -4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 b 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))
43.6b
(-.f64 (*.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) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (*.f64 1/180 (*.f64 angle (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale)) (*.f64 (*.f64 4 (/.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)))
28.0b
0
Compiler

Compiled 41640 to 28467 computations (31.6% saved)

localize0.0ms (0%)

prune32.0ms (0%)

Pruning

9 alts after pruning (8 fresh and 1 done)

PrunedKeptTotal
New000
Fresh088
Picked011
Done000
Total099
Error
24.2b
Counts
9 → 9
Alt Table
StatusErrorProgram
44.8b
(+.f64 (-.f64 (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale) 2) (*.f64 (*.f64 4 (/.f64 (pow.f64 (hypot.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 x-scale x-scale))) (/.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 y-scale y-scale)))) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 4 (/.f64 (pow.f64 (hypot.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 x-scale x-scale))) (/.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 y-scale y-scale))))) (sqrt.f64 (*.f64 (*.f64 4 (/.f64 (pow.f64 (hypot.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 x-scale x-scale))) (/.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 y-scale y-scale)))) (*.f64 (*.f64 4 (/.f64 (pow.f64 (hypot.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 x-scale x-scale))) (/.f64 (pow.f64 (hypot.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))))) 2) (*.f64 y-scale y-scale)))))
37.1b
(neg.f64 (/.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))) (*.f64 x-scale x-scale)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (*.f64 a a) (*.f64 b b))) (*.f64 x-scale x-scale)) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 b b)))) (*.f64 x-scale x-scale))))) (*.f64 y-scale y-scale)))
41.5b
(-.f64 (*.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) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 3)) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale)) (*.f64 (*.f64 4 (/.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)))
37.4b
(neg.f64 (*.f64 (*.f64 a a) (fma.f64 4 (/.f64 (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))) (fma.f64 4 (/.f64 (*.f64 (*.f64 b b) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 b b))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))))))))
41.0b
(-.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 b 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 a 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))) (+.f64 (*.f64 8 (/.f64 (*.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 y-scale 2) (pow.f64 x-scale 2)))) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (pow.f64 a 2) (pow.f64 b 2))) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2)))) (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 b 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))))))
41.5b
(-.f64 (*.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) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) 2))) x-scale) y-scale)) (*.f64 (*.f64 4 (/.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)))
37.6b
(*.f64 -4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 b 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))
43.6b
(-.f64 (*.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) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (*.f64 1/180 (*.f64 angle (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) x-scale) y-scale)) (*.f64 (*.f64 4 (/.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)))
28.0b
0
Compiler

Compiled 1872 to 1292 computations (31% saved)

localize37.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
18.1b
(*.f64 (*.f64 a a) (*.f64 b b))
19.2b
(/.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))) (*.f64 x-scale x-scale)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (*.f64 a a) (*.f64 b b))) (*.f64 x-scale x-scale)) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 b b)))) (*.f64 x-scale x-scale))))) (*.f64 y-scale y-scale))
26.1b
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
26.2b
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

series2.3s (3%)

Counts
4 → 92
Calls

4 calls:

2.3s
(/.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))) (*.f64 x-scale x-scale)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (*.f64 a a) (*.f64 b b))) (*.f64 x-scale x-scale)) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 b b)))) (*.f64 x-scale x-scale))))) (*.f64 y-scale y-scale))
12.0ms
(*.f64 (*.f64 a a) (*.f64 b b))
3.0ms
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
3.0ms
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

rewrite213.0ms (0.3%)

Algorithm
egg-rewrite
Rules
62×egg
22×egg
22×egg
22×egg
Counts
4 → 128
Calls

4 calls:

75.0ms
(/.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))) (*.f64 x-scale x-scale)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (*.f64 a a) (*.f64 b b))) (*.f64 x-scale x-scale)) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 b b)))) (*.f64 x-scale x-scale))))) (*.f64 y-scale y-scale))
45.0ms
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
45.0ms
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
44.0ms
(*.f64 (*.f64 a a) (*.f64 b b))
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0710
114010
2157610
3516110
0710
114010
2157610
3516210
037123
1801111
24864111
34959111
0610
11237
213487
350847

simplify182.0ms (0.2%)

Algorithm
egg-herbie
Rules
687×fma-def_binary64
445×unswap-sqr_binary64
292×cancel-sign-sub-inv_binary64
275×fma-neg_binary64
238×associate-*r*_binary64
Counts
220 → 158
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01677450
15577298
222776763
347826763
449806763

prune656.0ms (0.8%)

Pruning

10 alts after pruning (9 fresh and 1 done)

PrunedKeptTotal
New2097216
Fresh527
Picked101
Done011
Total21510225
Error
22.0b
Counts
225 → 10
Alt Table
StatusErrorProgram
36.6b
(neg.f64 (/.f64 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))) (*.f64 x-scale x-scale)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 b (*.f64 a (*.f64 a b)))) (*.f64 x-scale x-scale)) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 b b)))) (*.f64 x-scale x-scale))))) (*.f64 y-scale y-scale)))
31.4b
(neg.f64 (/.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale)) (*.f64 8 (*.f64 (*.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)) (pow.f64 x-scale -2))))) y-scale) y-scale))
38.5b
(neg.f64 (/.f64 (fma.f64 4 (*.f64 (/.f64 (*.f64 a a) x-scale) (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) x-scale) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) x-scale))) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 a a) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 x-scale x-scale)))) (/.f64 (*.f64 y-scale y-scale) (*.f64 b b))))
37.6b
(*.f64 -4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 b 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))
38.8b
(neg.f64 (*.f64 (/.f64 (*.f64 a a) (*.f64 y-scale y-scale)) (fma.f64 4 (*.f64 (/.f64 (*.f64 b b) x-scale) (+.f64 (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) x-scale) (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) x-scale))) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 x-scale x-scale))))))
28.0b
0
37.8b
(neg.f64 (/.f64 (*.f64 (pow.f64 a 2) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale 2))) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 2)) (pow.f64 x-scale 2))) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (pow.f64 x-scale 2)))))) (pow.f64 y-scale 2)))
35.7b
(neg.f64 (pow.f64 (sqrt.f64 (*.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale)) (*.f64 8 (*.f64 (*.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)) (pow.f64 x-scale -2))))) (pow.f64 y-scale -2))) 2))
35.2b
(neg.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale)) (*.f64 8 (*.f64 (*.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)) (pow.f64 x-scale -2))))) (*.f64 y-scale y-scale)))
41.5b
(-.f64 (*.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) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) 2))) x-scale) y-scale)) (*.f64 (*.f64 4 (/.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)))
Compiler

Compiled 19744 to 10523 computations (46.7% saved)

localize35.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
14.1b
(*.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))
14.9b
(/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale))
26.1b
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
26.2b
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

series351.0ms (0.5%)

Counts
2 → 84
Calls

2 calls:

214.0ms
(/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale))
138.0ms
(*.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))

rewrite206.0ms (0.3%)

Algorithm
egg-rewrite
Rules
66×egg
35×egg
Counts
2 → 101
Calls

2 calls:

128.0ms
(*.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))
76.0ms
(/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale))
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01828
137825
2436825
3499025
01631
132931
2352131
3491931
4497731
5490631

simplify102.0ms (0.1%)

Algorithm
egg-herbie
Rules
744×fma-neg_binary64
527×times-frac_binary64
412×*-commutative_binary64
367×associate-/l*_binary64
314×unswap-sqr_binary64
Counts
185 → 119
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0843172
12603168
29923122
343103122
450283122

prune921.0ms (1.2%)

Pruning

15 alts after pruning (14 fresh and 1 done)

PrunedKeptTotal
New2278235
Fresh268
Picked101
Done011
Total23015245
Error
19.5b
Counts
245 → 15
Alt Table
StatusErrorProgram
41.5b
(-.f64 (*.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) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (pow.f64 b 2) (pow.f64 a 2))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) (sqrt.f64 (pow.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) 2))) x-scale) y-scale)) (*.f64 (*.f64 4 (/.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)))
25.5b
(neg.f64 (/.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale)) (*.f64 8 (*.f64 (pow.f64 (*.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) a) (*.f64 b (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 2) (pow.f64 x-scale -2))))) y-scale) y-scale))
38.5b
(neg.f64 (/.f64 (fma.f64 4 (*.f64 (/.f64 (*.f64 a a) x-scale) (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) x-scale) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) x-scale))) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 a a) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 x-scale x-scale)))) (/.f64 (*.f64 y-scale y-scale) (*.f64 b b))))
37.6b
(*.f64 -4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 b 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))
38.8b
(neg.f64 (*.f64 (/.f64 (*.f64 a a) (*.f64 y-scale y-scale)) (fma.f64 4 (*.f64 (/.f64 (*.f64 b b) x-scale) (+.f64 (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) x-scale) (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) x-scale))) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 x-scale x-scale))))))
31.1b
(neg.f64 (/.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (pow.f64 (cbrt.f64 (pow.f64 (/.f64 (*.f64 (*.f64 a b) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) x-scale) 2)) 3) (*.f64 8 (*.f64 (*.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)) (pow.f64 x-scale -2))))) y-scale) y-scale))
28.0b
0
37.8b
(neg.f64 (/.f64 (*.f64 (pow.f64 a 2) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale 2))) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 b 2)) (pow.f64 x-scale 2))) (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 b 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (pow.f64 x-scale 2)))))) (pow.f64 y-scale 2)))
35.2b
(neg.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale)) (*.f64 8 (*.f64 (*.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)) (pow.f64 x-scale -2))))) (*.f64 y-scale y-scale)))
25.5b
(neg.f64 (/.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale)) (*.f64 8 (*.f64 (pow.f64 (cbrt.f64 (pow.f64 (*.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) a) (*.f64 b (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 2)) 3) (pow.f64 x-scale -2))))) y-scale) y-scale))
26.9b
(neg.f64 (/.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 x-scale x-scale)) (*.f64 8 (*.f64 (pow.f64 (pow.f64 (pow.f64 (*.f64 (*.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) a) (*.f64 b (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 2) 3) 1/3) (pow.f64 x-scale -2))))) y-scale) y-scale))
36.6b
(neg.f64 (/.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (*.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (cbrt.f64 (pow.f64 x-scale 4))) (/.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (cbrt.f64 x-scale) 2))) (*.f64 8 (*.f64 (*.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)) (pow.f64 x-scale -2))))) y-scale) y-scale))
31.4b
(neg.f64 (/.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (exp.f64 (log.f64 (pow.f64 (/.f64 (*.f64 (*.f64 a b) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) x-scale) 2))) (*.f64 8 (*.f64 (*.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)) (pow.f64 x-scale -2))))) y-scale) y-scale))
31.1b
(neg.f64 (/.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (*.f64 (*.f64 (*.f64 a b) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 (*.f64 (*.f64 a b) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (pow.f64 x-scale -2))) (*.f64 8 (*.f64 (*.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)) (pow.f64 x-scale -2))))) y-scale) y-scale))
31.4b
(neg.f64 (/.f64 (/.f64 (fma.f64 4 (*.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (fma.f64 4 (/.f64 (*.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) x-scale) (pow.f64 (*.f64 a b) 2)) x-scale) (*.f64 8 (*.f64 (*.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)) (pow.f64 x-scale -2))))) y-scale) y-scale))
Compiler

Compiled 19709 to 12686 computations (35.6% saved)

regimes2.1s (2.7%)

Accuracy

Total 5.2b remaining (20.7%)

Threshold costs 0b (0%)

Counts
95 → 3
Compiler

Compiled 70578 to 49251 computations (30.2% saved)

bsearch1.3s (1.7%)

Steps
ItersRangePoint
10
6.181985499258908e+46
2.360926834084748e+60
3.2690170656138226e+59
6
-1.2341836887308364e+212
-2.0224123572580359e+211
-2.3171389343851727e+211
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify6.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
045124
161124
267124
372124
475124
576124
676124

end623.0ms (0.8%)

Compiler

Compiled 1246 to 885 computations (29% saved)

Profiling

Loading profile data...