Details

Time bar (total: 1.6min)

analyze14.3s (14.5%)

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)

sample1.3s (1.4%)

Algorithm
intervals
Results
357.0ms43×body4096valid
297.0ms62×body2048valid
198.0ms27×body4096invalid
142.0ms29×body2048invalid
82.0ms26×body1024valid
74.0ms112×body128valid
74.0ms22×body1024invalid
21.0ms35×body128invalid
18.0msbody512invalid
18.0msbody512valid
15.0msbody8192valid
9.0msbody256invalid
3.0msbody256valid
Compiler

Compiled 234 to 172 computations (26.5% saved)

simplify46.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

prune12.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
42.3b
Counts
3 → 2
Alt Table
StatusErrorProgram
45.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)))))))
42.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))) (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)

localize44.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
24.0b
(cos.f64 (*.f64 (/.f64 angle 180) PI.f64))
24.0b
(cos.f64 (*.f64 (/.f64 angle 180) PI.f64))
24.0b
(cos.f64 (*.f64 (/.f64 angle 180) PI.f64))
29.9b
(-.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)))

rewrite37.0ms (0%)

Algorithm
rewrite-expression-head
Rules
15×associate-*r/_binary64
frac-sub_binary64
associate-*l/_binary64
frac-times_binary64
add-log-exp_binary64
Counts
2 → 36
Calls

2 calls:

29.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)))
1.0ms
(cos.f64 (*.f64 (/.f64 angle 180) PI.f64))

series4.4s (4.4%)

Counts
2 → 72
Calls

2 calls:

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

simplify268.0ms (0.3%)

Algorithm
egg-herbie
Rules
451×times-frac_binary64
398×associate-*r*_binary64
387×associate-/l*_binary64
289×associate-*l*_binary64
268×associate-/r*_binary64
Counts
108 → 203
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
038018904
1119715920
2511215920

prune480.0ms (0.5%)

Pruning

8 alts after pruning (8 fresh and 0 done)

PrunedKeptTotal
New2897296
Fresh011
Picked101
Done000
Total2908298
Error
27.0b
Counts
298 → 8
Alt Table
StatusErrorProgram
39.3b
(/.f64 (-.f64 0 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 b b))) (*.f64 y-scale y-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 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))
41.9b
(-.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))) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (*.f64 (/.f64 angle 180) PI.f64))) (cbrt.f64 (cos.f64 (*.f64 (/.f64 angle 180) PI.f64)))) (cbrt.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.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)))))))
43.6b
(/.f64 (fma.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) y-scale) (*.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) y-scale) (*.f64 -4 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) (*.f64 x-scale x-scale))))) y-scale)
39.6b
(*.f64 -1 (*.f64 (+.f64 (*.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) (pow.f64 b 2))) (*.f64 (pow.f64 x-scale 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 b 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))) (*.f64 4 (/.f64 (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (pow.f64 b 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))))) (pow.f64 a 2)))
30.8b
0
42.0b
(/.f64 (*.f64 y-scale (-.f64 (*.f64 x-scale (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) y-scale))) (*.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) y-scale) (*.f64 4 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) x-scale))))) (*.f64 y-scale (*.f64 y-scale x-scale)))
40.3b
(*.f64 (fma.f64 4 (*.f64 (/.f64 (*.f64 a a) (*.f64 x-scale x-scale)) (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 y-scale y-scale)) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 y-scale y-scale)))) (*.f64 8 (/.f64 (*.f64 (*.f64 a a) (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 2))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))))) (neg.f64 (*.f64 b b)))
Compiler

Compiled 20494 to 13919 computations (32.1% saved)

localize0.0ms (0%)

rewrite0.0ms (0%)

Algorithm
rewrite-expression-head
Counts
0 → 0

series0.0ms (0%)

Counts
0 → 0

simplify16.0ms (0%)

Algorithm
egg-herbie
Counts
0 → 0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
100

prune32.0ms (0%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New000
Fresh077
Picked011
Done000
Total088
Error
27.0b
Counts
8 → 8
Alt Table
StatusErrorProgram
39.3b
(/.f64 (-.f64 0 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 b b))) (*.f64 y-scale y-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 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))
41.9b
(-.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))) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (*.f64 (/.f64 angle 180) PI.f64))) (cbrt.f64 (cos.f64 (*.f64 (/.f64 angle 180) PI.f64)))) (cbrt.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.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)))))))
43.6b
(/.f64 (fma.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) y-scale) (*.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) y-scale) (*.f64 -4 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) (*.f64 x-scale x-scale))))) y-scale)
39.6b
(*.f64 -1 (*.f64 (+.f64 (*.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) (pow.f64 b 2))) (*.f64 (pow.f64 x-scale 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 b 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))) (*.f64 4 (/.f64 (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (pow.f64 b 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))))) (pow.f64 a 2)))
30.8b
0
42.0b
(/.f64 (*.f64 y-scale (-.f64 (*.f64 x-scale (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) y-scale))) (*.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) y-scale) (*.f64 4 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) x-scale))))) (*.f64 y-scale (*.f64 y-scale x-scale)))
40.3b
(*.f64 (fma.f64 4 (*.f64 (/.f64 (*.f64 a a) (*.f64 x-scale x-scale)) (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 y-scale y-scale)) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 y-scale y-scale)))) (*.f64 8 (/.f64 (*.f64 (*.f64 a a) (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 2))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))))) (neg.f64 (*.f64 b b)))
Compiler

Compiled 1448 to 974 computations (32.7% saved)

localize40.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
24.1b
(sin.f64 (*.f64 1/180 (*.f64 angle PI.f64)))
24.1b
(sin.f64 (*.f64 1/180 (*.f64 angle PI.f64)))
24.3b
(cos.f64 (*.f64 1/180 (*.f64 angle PI.f64)))
24.3b
(cos.f64 (*.f64 1/180 (*.f64 angle PI.f64)))

rewrite3.0ms (0%)

Algorithm
rewrite-expression-head
Rules
*-un-lft-identity_binary64
add-sqr-sqrt_binary64
add-cube-cbrt_binary64
add-cbrt-cube_binary64
add-exp-log_binary64
Counts
2 → 18
Calls

2 calls:

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

series5.0ms (0%)

Counts
2 → 8
Calls

2 calls:

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

simplify66.0ms (0.1%)

Algorithm
egg-herbie
Rules
750×fma-neg_binary64
608×distribute-rgt-neg-in_binary64
598×distribute-lft-neg-in_binary64
425×associate-*r*_binary64
394×associate-*l*_binary64
Counts
26 → 34
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
073504
1179458
2522452
32292452
44894443
55189443

prune191.0ms (0.2%)

Pruning

8 alts after pruning (6 fresh and 2 done)

PrunedKeptTotal
New68068
Fresh066
Picked011
Done011
Total68876
Error
27.0b
Counts
76 → 8
Alt Table
StatusErrorProgram
39.3b
(/.f64 (-.f64 0 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 b b))) (*.f64 y-scale y-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 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))
41.9b
(-.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))) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (*.f64 (/.f64 angle 180) PI.f64))) (cbrt.f64 (cos.f64 (*.f64 (/.f64 angle 180) PI.f64)))) (cbrt.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.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)))))))
43.6b
(/.f64 (fma.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) y-scale) (*.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) y-scale) (*.f64 -4 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) (*.f64 x-scale x-scale))))) y-scale)
39.6b
(*.f64 -1 (*.f64 (+.f64 (*.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) (pow.f64 b 2))) (*.f64 (pow.f64 x-scale 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 b 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))) (*.f64 4 (/.f64 (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (pow.f64 b 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))))) (pow.f64 a 2)))
30.8b
0
42.0b
(/.f64 (*.f64 y-scale (-.f64 (*.f64 x-scale (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) y-scale))) (*.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) y-scale) (*.f64 4 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) x-scale))))) (*.f64 y-scale (*.f64 y-scale x-scale)))
40.3b
(*.f64 (fma.f64 4 (*.f64 (/.f64 (*.f64 a a) (*.f64 x-scale x-scale)) (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 y-scale y-scale)) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 y-scale y-scale)))) (*.f64 8 (/.f64 (*.f64 (*.f64 a a) (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 2))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))))) (neg.f64 (*.f64 b b)))
Compiler

Compiled 7461 to 3977 computations (46.7% saved)

localize37.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
24.1b
(sin.f64 (*.f64 1/180 (*.f64 angle PI.f64)))
24.1b
(sin.f64 (*.f64 1/180 (*.f64 angle PI.f64)))
24.3b
(cos.f64 (*.f64 1/180 (*.f64 angle PI.f64)))
24.3b
(cos.f64 (*.f64 1/180 (*.f64 angle PI.f64)))

rewrite0.0ms (0%)

Algorithm
rewrite-expression-head
Counts
0 → 0

series0.0ms (0%)

Counts
0 → 0

simplify10.0ms (0%)

Algorithm
egg-herbie
Counts
0 → 0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
100

prune222.0ms (0.2%)

Pruning

8 alts after pruning (5 fresh and 3 done)

PrunedKeptTotal
New2040204
Fresh055
Picked011
Done022
Total2048212
Error
27.0b
Counts
212 → 8
Alt Table
StatusErrorProgram
39.3b
(/.f64 (-.f64 0 (fma.f64 4 (/.f64 (*.f64 (*.f64 a a) (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 b b))) (*.f64 y-scale y-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 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))
41.9b
(-.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))) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (*.f64 (/.f64 angle 180) PI.f64))) (cbrt.f64 (cos.f64 (*.f64 (/.f64 angle 180) PI.f64)))) (cbrt.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.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)))))))
43.6b
(/.f64 (fma.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) y-scale) (*.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) y-scale) (*.f64 -4 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) (*.f64 x-scale x-scale))))) y-scale)
39.6b
(*.f64 -1 (*.f64 (+.f64 (*.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) (pow.f64 b 2))) (*.f64 (pow.f64 x-scale 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 b 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))) (*.f64 4 (/.f64 (*.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (pow.f64 b 2)) (*.f64 (pow.f64 x-scale 2) (pow.f64 y-scale 2)))))) (pow.f64 a 2)))
30.8b
0
42.0b
(/.f64 (*.f64 y-scale (-.f64 (*.f64 x-scale (*.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 2 (-.f64 (*.f64 b b) (*.f64 a a))) (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) x-scale) y-scale))) (*.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) y-scale) (*.f64 4 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2) (pow.f64 (*.f64 b (cos.f64 (*.f64 PI.f64 (/.f64 angle 180)))) 2)) x-scale))))) (*.f64 y-scale (*.f64 y-scale x-scale)))
40.3b
(*.f64 (fma.f64 4 (*.f64 (/.f64 (*.f64 a a) (*.f64 x-scale x-scale)) (+.f64 (/.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 y-scale y-scale)) (/.f64 (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 4) (*.f64 y-scale y-scale)))) (*.f64 8 (/.f64 (*.f64 (*.f64 a a) (*.f64 (pow.f64 (cos.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 2) (pow.f64 (sin.f64 (*.f64 1/180 (*.f64 angle PI.f64))) 2))) (*.f64 (*.f64 y-scale y-scale) (*.f64 x-scale x-scale))))) (neg.f64 (*.f64 b b)))
Compiler

Compiled 6962 to 5102 computations (26.7% saved)

regimes1.7s (1.7%)

Accuracy

Total 3.8b remaining (12.9%)

Threshold costs 0b (0%)

Compiler

Compiled 71345 to 50985 computations (28.5% saved)

bsearch13.0ms (0%)

Compiler

Compiled 114 to 83 computations (27.2% saved)

simplify18.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
072306
1107306
2136306
3157306
4176306
5195306
6213306
7223306
8227306
9226306

end3.0ms (0%)

Compiler

Compiled 198 to 128 computations (35.4% saved)

sample1.3min (76.3%)

Algorithm
intervals
Results
19.1s1442×body4096valid
14.7s1734×body2048valid
10.9s802×body4096invalid
9.1s1123×body2048invalid
4.8s840×body1024valid
3.9s3423×body128valid
3.9s694×body1024invalid
1.9s63×body8192valid
1.3s338×body512valid
1.0s1021×body128invalid
916.0ms265×body512invalid
863.0ms30×body8192invalid
331.0ms160×body256valid
283.0ms130×body256invalid
Compiler

Compiled 1045 to 707 computations (32.3% saved)

Profiling

Loading profile data...