Details

Time bar (total: 1.3min)

analyze12.8s (16.4%)

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)

sample50.6s (64.6%)

Results
12.9s1490×body4096valid
9.3s1756×body2048valid
7.8s847×body4096invalid
7.1s1255×body2048invalid
3.2s911×body1024valid
3.1s3500×body128valid
2.4s657×body1024invalid
1.2s68×body8192valid
828.0ms365×body512valid
753.0ms1043×body128invalid
741.0ms301×body512invalid
556.0ms31×body8192invalid
292.0ms166×body256valid
168.0ms117×body256invalid
Compiler

Compiled 344 to 251 computations (27% saved)

simplify42.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
43.7b
Counts
3 → 2
Alt Table
StatusErrorProgram
47.6b
(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))))))))
44.0b
(-.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)

localize42.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
11.1b
(*.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.4b
(cos.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
28.6b
(sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))
33.1b
(-.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)))

series2.7s (3.4%)

Counts
4 → 144
Calls

4 calls:

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

rewrite86.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
429×log1p-expm1-u_binary64
429×expm1-log1p-u_binary64
413×add-log-exp_binary64
398×pow1_binary64
152×log-prod_binary64
Counts
4 → 91
Calls

4 calls:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
040238
1914226
25200226
000
100

simplify291.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
235 → 159
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
029718027
1102016993
2486616993
3519516993

prune1.1s (1.4%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New29112303
Fresh101
Picked101
Done000
Total29312305
Error
27.0b
Counts
305 → 12
Alt Table
StatusErrorProgram
44.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))) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (cbrt.f64 (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)))
40.2b
(*.f64 -4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 b 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))
47.2b
(-.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))))
46.1b
(-.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale)))) (fma.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 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))) (*.f64 4 (+.f64 (/.f64 (*.f64 (*.f64 a a) (*.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 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 y-scale y-scale)) (/.f64 (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 x-scale x-scale)) (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (*.f64 a a) (*.f64 b b))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))))))))
49.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 (-.f64 (fma.f64 1/25194240000 (*.f64 (pow.f64 angle 4) (pow.f64 (PI.f64) 4)) 1) (*.f64 1/64800 (*.f64 (*.f64 angle angle) (pow.f64 (PI.f64) 2))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale)))
33.2b
0
45.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 (*.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) y-scale)) y-scale))
44.0b
(-.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 (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) 3))) 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)))
44.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))) (cbrt.f64 (pow.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)))
44.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 (log.f64 (exp.f64 (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)))
40.1b
(neg.f64 (/.f64 (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 y-scale y-scale)) (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 y-scale y-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 y-scale y-scale))))) (*.f64 x-scale x-scale)))
40.3b
(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))))))))
Compiler

Compiled 39468 to 26910 computations (31.8% saved)

localize0.0ms (0%)

prune41.0ms (0.1%)

Pruning

12 alts after pruning (11 fresh and 1 done)

PrunedKeptTotal
New000
Fresh01111
Picked011
Done000
Total01212
Error
27.0b
Counts
12 → 12
Alt Table
StatusErrorProgram
44.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))) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (cbrt.f64 (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)))
40.2b
(*.f64 -4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 b 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))
47.2b
(-.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))))
46.1b
(-.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale)))) (fma.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 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))) (*.f64 4 (+.f64 (/.f64 (*.f64 (*.f64 a a) (*.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 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 y-scale y-scale)) (/.f64 (*.f64 (pow.f64 a 4) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)) (*.f64 x-scale x-scale)) (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (*.f64 a a) (*.f64 b b))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))))))))
49.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 (-.f64 (fma.f64 1/25194240000 (*.f64 (pow.f64 angle 4) (pow.f64 (PI.f64) 4)) 1) (*.f64 1/64800 (*.f64 (*.f64 angle angle) (pow.f64 (PI.f64) 2))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale)))
33.2b
0
45.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 (*.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) y-scale)) y-scale))
44.0b
(-.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 (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) 3))) 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)))
44.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))) (cbrt.f64 (pow.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)))
44.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 (log.f64 (exp.f64 (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)))
40.1b
(neg.f64 (/.f64 (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 y-scale y-scale)) (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 y-scale y-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 y-scale y-scale))))) (*.f64 x-scale x-scale)))
40.3b
(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))))))))
Compiler

Compiled 2288 to 1558 computations (31.9% saved)

localize40.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
16.9b
(/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (*.f64 a a) (*.f64 b b))) (*.f64 y-scale y-scale))
20.5b
(/.f64 (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 y-scale y-scale)) (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 y-scale y-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 y-scale y-scale))))) (*.f64 x-scale x-scale))
28.4b
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
28.8b
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

series1.3s (1.6%)

Counts
4 → 116
Calls

4 calls:

1.1s
(/.f64 (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 y-scale y-scale)) (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 y-scale y-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 y-scale y-scale))))) (*.f64 x-scale x-scale))
167.0ms
(/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (*.f64 (*.f64 a a) (*.f64 b b))) (*.f64 y-scale y-scale))
3.0ms
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
3.0ms
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

rewrite77.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
363×log1p-expm1-u_binary64
363×expm1-log1p-u_binary64
359×add-log-exp_binary64
358×add-exp-log_binary64
347×pow1_binary64
Counts
4 → 68
Calls

4 calls:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
037174
1801159
24864159
34959159
000
100

simplify179.0ms (0.2%)

Algorithm
egg-herbie
Rules
687×fma-def_binary64
448×unswap-sqr_binary64
311×cancel-sign-sub-inv_binary64
279×fma-neg_binary64
251×associate-*r*_binary64
Counts
184 → 106
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01818612
16018451
224718017
346808017
448738017

prune444.0ms (0.6%)

Pruning

14 alts after pruning (13 fresh and 1 done)

PrunedKeptTotal
New1457152
Fresh4610
Picked101
Done011
Total15014164
Error
25.6b
Counts
164 → 14
Alt Table
StatusErrorProgram
40.0b
(neg.f64 (/.f64 (fma.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2)))) (*.f64 y-scale y-scale)) (*.f64 (/.f64 4 y-scale) (+.f64 (/.f64 (*.f64 (*.f64 (*.f64 a a) (*.f64 b b)) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) y-scale) (/.f64 (*.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4))) y-scale)))) (*.f64 x-scale x-scale)))
49.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 (-.f64 (fma.f64 1/25194240000 (*.f64 (pow.f64 angle 4) (pow.f64 (PI.f64) 4)) 1) (*.f64 1/64800 (*.f64 (*.f64 angle angle) (pow.f64 (PI.f64) 2))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale)))
39.9b
(neg.f64 (/.f64 (fma.f64 4 (pow.f64 (cbrt.f64 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 y-scale y-scale))) 3) (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 y-scale y-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 y-scale y-scale))))) (*.f64 x-scale x-scale)))
33.2b
0
38.0b
(neg.f64 (pow.f64 (sqrt.f64 (*.f64 (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.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)) (*.f64 y-scale y-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 y-scale -2))))) (pow.f64 x-scale -2))) 2))
45.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 (*.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) y-scale)) y-scale))
38.1b
(neg.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.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)) (*.f64 y-scale y-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 y-scale -2))))) (pow.f64 x-scale -2))) 3))
44.0b
(-.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 (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) 3))) 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)))
44.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))) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (cbrt.f64 (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)))
40.2b
(*.f64 -4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 b 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))
44.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))) (cbrt.f64 (pow.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)))
38.0b
(neg.f64 (*.f64 (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.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)) (*.f64 y-scale y-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 y-scale -2))))) (pow.f64 x-scale -2)))
40.6b
(neg.f64 (/.f64 (fma.f64 4 (*.f64 (/.f64 (*.f64 a a) y-scale) (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) y-scale) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) y-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 y-scale y-scale)))) (/.f64 (*.f64 x-scale x-scale) (*.f64 b b))))
39.7b
(neg.f64 (/.f64 (*.f64 (+.f64 (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (pow.f64 y-scale 2))) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 a 2)) (pow.f64 y-scale 2))) (*.f64 4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 y-scale 2))))) (pow.f64 b 2)) (pow.f64 x-scale 2)))
Compiler

Compiled 15284 to 8455 computations (44.7% saved)

localize34.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
16.9b
(/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 y-scale y-scale))
20.4b
(*.f64 (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.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)) (*.f64 y-scale y-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 y-scale -2))))) (pow.f64 x-scale -2))
28.4b
(cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))
28.8b
(sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64))))

series1.6s (2%)

Counts
2 → 108
Calls

2 calls:

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

rewrite41.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
356×log1p-expm1-u_binary64
356×expm1-log1p-u_binary64
348×add-cbrt-cube_binary64
344×add-log-exp_binary64
343×add-exp-log_binary64
Counts
2 → 32
Calls

2 calls:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
037136
1785136
25409136
000
100

simplify144.0ms (0.2%)

Algorithm
egg-herbie
Rules
508×fma-def_binary64
436×associate-*l/_binary64
406×unswap-sqr_binary64
346×associate-/r/_binary64
216×times-frac_binary64
Counts
140 → 56
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01438396
14828239
220607535
351957535

prune534.0ms (0.7%)

Pruning

15 alts after pruning (14 fresh and 1 done)

PrunedKeptTotal
New1426148
Fresh4812
Picked101
Done011
Total14715162
Error
24.0b
Counts
162 → 15
Alt Table
StatusErrorProgram
32.2b
(neg.f64 (pow.f64 (sqrt.f64 (*.f64 (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.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)) (*.f64 y-scale y-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 y-scale -2))))) (pow.f64 x-scale -2))) 2))
44.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))) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2) (cbrt.f64 (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)))
40.2b
(*.f64 -4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 b 2)) (*.f64 (pow.f64 y-scale 2) (pow.f64 x-scale 2))))
32.1b
(neg.f64 (*.f64 (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.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)) (*.f64 y-scale y-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 y-scale -2))))) (pow.f64 x-scale -2)))
40.6b
(neg.f64 (/.f64 (fma.f64 4 (*.f64 (/.f64 (*.f64 a a) y-scale) (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) y-scale) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) y-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 y-scale y-scale)))) (/.f64 (*.f64 x-scale x-scale) (*.f64 b b))))
50.1b
(neg.f64 (*.f64 (fma.f64 4 (fma.f64 1/629856000 (/.f64 (*.f64 (pow.f64 angle 4) (*.f64 (*.f64 (*.f64 a a) (*.f64 b b)) (pow.f64 (PI.f64) 4))) (*.f64 y-scale y-scale)) (fma.f64 (/.f64 (*.f64 a a) (*.f64 y-scale y-scale)) (*.f64 b b) (fma.f64 (/.f64 (*.f64 (*.f64 angle angle) (*.f64 (*.f64 (*.f64 a a) (*.f64 b b)) (pow.f64 (PI.f64) 2))) (*.f64 y-scale y-scale)) -1/16200 (*.f64 (/.f64 (*.f64 (pow.f64 angle 6) (*.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (PI.f64) 6)))) (*.f64 y-scale y-scale)) -17/765275040000000)))) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (*.f64 y-scale y-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 y-scale -2))))) (pow.f64 x-scale -2)))
39.7b
(neg.f64 (/.f64 (*.f64 (+.f64 (*.f64 8 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2) (*.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 2))) (pow.f64 y-scale 2))) (+.f64 (*.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 a 2)) (pow.f64 y-scale 2))) (*.f64 4 (/.f64 (*.f64 (pow.f64 a 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (pow.f64 y-scale 2))))) (pow.f64 b 2)) (pow.f64 x-scale 2)))
49.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 (-.f64 (fma.f64 1/25194240000 (*.f64 (pow.f64 angle 4) (pow.f64 (PI.f64) 4)) 1) (*.f64 1/64800 (*.f64 (*.f64 angle angle) (pow.f64 (PI.f64) 2))))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle 180) (PI.f64)))) 2)) y-scale) y-scale)))
33.2b
0
45.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 (*.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) y-scale)) y-scale))
44.0b
(-.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 (cbrt.f64 (pow.f64 (cos.f64 (*.f64 (/.f64 angle 180) (PI.f64))) 3))) 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)))
44.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))) (cbrt.f64 (pow.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)))
38.1b
(neg.f64 (*.f64 (fma.f64 4 (pow.f64 (cbrt.f64 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.f64 y-scale y-scale))) 3) (fma.f64 4 (/.f64 (*.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) (*.f64 y-scale y-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 y-scale -2))))) (pow.f64 x-scale -2)))
32.2b
(neg.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 4 (/.f64 (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4) (pow.f64 (*.f64 a b) 2)) (*.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)) (*.f64 y-scale y-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 y-scale -2))))) (pow.f64 x-scale -2))) 3))
41.3b
(neg.f64 (*.f64 (/.f64 (*.f64 a a) (*.f64 x-scale x-scale)) (fma.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 y-scale y-scale)) (*.f64 (/.f64 4 y-scale) (+.f64 (/.f64 (*.f64 (*.f64 b b) (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) y-scale) (/.f64 (*.f64 (*.f64 b b) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle (PI.f64)))) 4)) y-scale))))))
Compiler

Compiled 12836 to 8188 computations (36.2% saved)

regimes2.2s (2.8%)

Accuracy

Total 5.1b remaining (18.6%)

Threshold costs 0b (0%)

Counts
67 → 4
Compiler

Compiled 62752 to 43039 computations (31.4% saved)

bsearch3.1s (3.9%)

Steps
ItersRangePoint
10
4.617520012776859e-161
4.8216159733348804e-151
7.400822927420862e-155
10
-7.828262803921106e-124
-1.2966652660528904e-137
-1.320717690828003e-137
8
-1.8731898553074175e+172
-2.7912087138795753e+169
-2.8188140419137164e+169
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
048240
166240
274240
379240
481240
581240

end1.0s (1.3%)

Compiler

Compiled 1610 to 1114 computations (30.8% saved)

Profiling

Loading profile data...