Details

Time bar (total: 1.3min)

analyze12.6s (15.6%)

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)

sample48.1s (59.8%)

Results
12.7s1426×body4096valid
9.1s1768×body2048valid
7.2s863×body4096invalid
6.1s1161×body2048invalid
3.2s926×body1024valid
2.9s3539×body128valid
2.5s708×body1024invalid
1.2s68×body8192valid
871.0ms376×body512valid
747.0ms1084×body128invalid
666.0ms292×body512invalid
627.0ms36×body8192invalid
212.0ms153×body256valid
186.0ms132×body256invalid
Compiler

Compiled 344 to 251 computations (27% saved)

simplify40.0ms (0%)

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)

localize39.0ms (0%)

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

series3.7s (4.6%)

Counts
4 → 144
Calls

4 calls:

2.8s
(-.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)))
905.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))
4.0ms
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
3.0ms
(cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))

rewrite82.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
87×egg-rr
Counts
4 → 87
Calls

2 calls:

76.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))) (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64))) (*.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)))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
040238
1914226
25200226
000
100

simplify304.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
231 → 155
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
029718027
1102016993
2486616993
3519516993

prune1.1s (1.3%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New2849293
Fresh101
Picked101
Done000
Total2869295
Error
24.2b
Counts
295 → 9
Alt Table
StatusErrorProgram
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)))
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))))
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.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)))
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))))))))
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)))))
28.0b
0
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)))
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)))) 1) 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 37980 to 25897 computations (31.8% saved)

localize0.0ms (0%)

prune31.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
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)))
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))))
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.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)))
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))))))))
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)))))
28.0b
0
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)))
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)))) 1) 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 1856 to 1280 computations (31% saved)

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

series1.7s (2.1%)

Counts
4 → 92
Calls

4 calls:

1.7s
(/.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))
11.0ms
(*.f64 (*.f64 a a) (*.f64 b b))
5.0ms
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
3.0ms
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

rewrite75.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
61×egg-rr
Counts
4 → 61
Calls

2 calls:

74.0ms
((cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) (sin.f64 (*.f64 1/180 (*.f64 angle (PI.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)) (*.f64 (*.f64 a a) (*.f64 b b)))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
037153
1801138
24864138
34959138
000
100

simplify163.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
153 → 93
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01677450
15577298
222776763
347826763
449806763

prune392.0ms (0.5%)

Pruning

9 alts after pruning (8 fresh and 1 done)

PrunedKeptTotal
New1325137
Fresh437
Picked101
Done011
Total1379146
Error
22.7b
Counts
146 → 9
Alt Table
StatusErrorProgram
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)))
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)))
35.2b
(neg.f64 (pow.f64 (/.f64 (*.f64 y-scale y-scale) (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)))))) -1))
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)))) 1) 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)))
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))
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
Compiler

Compiled 12791 to 7001 computations (45.3% saved)

localize37.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
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))
18.1b
(/.f64 (*.f64 y-scale y-scale) (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))))))
26.1b
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
26.2b
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

series5.4s (6.7%)

Counts
2 → 108
Calls

2 calls:

5.2s
(/.f64 (*.f64 y-scale y-scale) (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))))))
200.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))

rewrite44.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
35×egg-rr
Counts
2 → 35
Calls

2 calls:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
037136
1781136
25383136
000
100

simplify139.0ms (0.2%)

Algorithm
egg-herbie
Rules
916×associate-/l*_binary64
595×associate-/r*_binary64
331×fma-def_binary64
269×unswap-sqr_binary64
212×associate-*l/_binary64
Counts
143 → 54
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01038302
13208158
213177340
351467340

prune582.0ms (0.7%)

Pruning

11 alts after pruning (10 fresh and 1 done)

PrunedKeptTotal
New1375142
Fresh257
Picked101
Done011
Total14011151
Error
20.8b
Counts
151 → 11
Alt Table
StatusErrorProgram
28.0b
0
37.5b
(neg.f64 (pow.f64 (/.f64 (*.f64 y-scale y-scale) (*.f64 (*.f64 b b) (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)))))) -1))
35.3b
(neg.f64 (pow.f64 (*.f64 (/.f64 y-scale (*.f64 a a)) (/.f64 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)))))) -1))
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)))) 1) 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)))
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))
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))))))
29.9b
(neg.f64 (pow.f64 (pow.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 (*.f64 a b) 2) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (*.f64 8 (*.f64 (pow.f64 x-scale -2) (pow.f64 (*.f64 (*.f64 a (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 b (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 2))))) (*.f64 y-scale y-scale)) -1) -1))
29.9b
(neg.f64 (pow.f64 (pow.f64 (sqrt.f64 (/.f64 (*.f64 y-scale y-scale) (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 (*.f64 a b) 2) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 x-scale -2)) (*.f64 8 (*.f64 (pow.f64 x-scale -2) (pow.f64 (*.f64 (*.f64 a (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))) (*.f64 b (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))))) 2))))))) 2) -1))
37.8b
(neg.f64 (pow.f64 (/.f64 (pow.f64 y-scale 2) (*.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))))))) -1))
Compiler

Compiled 12183 to 7887 computations (35.3% saved)

regimes2.2s (2.8%)

Accuracy

Total 5.6b remaining (21%)

Threshold costs 0b (0%)

Counts
53 → 5
Compiler

Compiled 43964 to 30443 computations (30.8% saved)

bsearch3.3s (4.2%)

Steps
ItersRangePoint
10
6.181985499258908e+46
2.360926834084748e+60
8.820974121076705e+56
7
1.2554971273801964e-150
3.0655792825731447e-148
1.8991933952856355e-150
10
-2.987988986991748e-56
-1.5258259993586639e-69
-1.5508134181418592e-69
8
-8.505198692469966e+126
-2.4256685579998474e+124
-4.542722851914629e+125
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify8.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
058261
174261
278261
380261
480261

end452.0ms (0.6%)

Compiler

Compiled 1087 to 770 computations (29.2% saved)

Profiling

Loading profile data...