Simplification of discriminant from scale-rotated-ellipse

Time bar (total: 3.1s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze479.0ms (15.6%)

Memory
7.2MiB live, 174.5MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.8%0.2%0%0%0%0
0%0%99.8%0.2%0%0%0%1
0%0%99.8%0.2%0%0%0%2
0%0%99.8%0.2%0%0%0%3
0%0%99.8%0.2%0%0%0%4
0%0%99.8%0.2%0%0%0%5
25%24.9%74.8%0.2%0%0%0%6
25%24.9%74.8%0.2%0%0%0%7
25%24.9%74.8%0.2%0%0%0%8
25%24.9%74.8%0.2%0%0%0%9
37.5%37.4%62.3%0.2%0%0%0%10
56.3%56.1%43.6%0.2%0%0%0%11
56.3%56.1%43.6%0.2%0%0%0%12
Compiler

Compiled 111 to 37 computations (66.7% saved)

sample175.0ms (5.7%)

Memory
2.8MiB live, 48.8MiB allocated
Samples
99.0ms134×1valid
36.0ms38×2valid
18.0ms88×0valid
Precisions
Click to see histograms. Total time spent on operations: 142.0ms
ival-sinu: 32.0ms (22.6% of total)
ival-mult: 26.0ms (18.3% of total)
ival-cosu: 26.0ms (18.3% of total)
ival-pow2: 23.0ms (16.2% of total)
ival-div: 16.0ms (11.3% of total)
adjust: 10.0ms (7.1% of total)
ival-sub: 4.0ms (2.8% of total)
ival-add: 4.0ms (2.8% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
Bogosity

explain2.2s (73%)

Memory
18.2MiB live, 649.7MiB allocated
Confusion
Predicted +Predicted -
+31171
-2034
Precision
0.6078431372549019
Recall
0.15346534653465346
2:
4:
8:
16:
32:
64:
128:
256:
512:
1024:
2048:
Samples
1.2s1 572×1valid
432.0ms456×2valid
231.0ms1 044×0valid
Compiler

Compiled 3 948 to 1 380 computations (65% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.7s
ival-sinu: 384.0ms (22.8% of total)
ival-cosu: 312.0ms (18.5% of total)
ival-mult: 310.0ms (18.4% of total)
ival-pow2: 268.0ms (15.9% of total)
ival-div: 193.0ms (11.4% of total)
adjust: 125.0ms (7.4% of total)
ival-sub: 45.0ms (2.7% of total)
ival-add: 44.0ms (2.6% of total)
exact: 3.0ms (0.2% of total)
ival-true: 2.0ms (0.1% of total)
ival-assert: 1.0ms (0.1% of total)

preprocess133.0ms (4.3%)

Memory
-5.8MiB live, 37.5MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
03362225
19252185
236572140
039109
070109
1119109
2322107
31396107
46336107
08835106
Stop Event
iter limit
node limit
iter limit
node limit
Calls
Call 1
Inputs
(-.f64 (*.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) (*.f64 (*.f64 #s(literal 4 binary64) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)))
Outputs
(-.f64 (*.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) (*.f64 (*.f64 #s(literal 4 binary64) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)))
(fma.f64 (*.f64 #s(literal -4 binary64) (+.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) b) #s(literal 2 binary64)) (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) a) #s(literal 2 binary64)))) (/.f64 (+.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) b) #s(literal 2 binary64)) (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) a) #s(literal 2 binary64))) (*.f64 (*.f64 y-scale x-scale) (*.f64 y-scale x-scale))) (*.f64 (*.f64 (*.f64 (/.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) (*.f64 y-scale x-scale)) (/.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) (*.f64 y-scale x-scale))) (*.f64 (*.f64 (*.f64 (-.f64 b a) (+.f64 a b)) (*.f64 (-.f64 b a) (+.f64 a b))) #s(literal 4 binary64))) (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))))))
Symmetry

(abs y-scale)

(abs x-scale)

(abs angle)

(abs b)

(abs a)

Compiler

Compiled 109 to 39 computations (64.2% saved)

eval0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated
Compiler

Compiled 0 to 5 computations (-∞% saved)

prune1.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
22.0%
(-.f64 (*.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) (*.f64 (*.f64 #s(literal 4 binary64) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)))
Compiler

Compiled 218 to 78 computations (64.2% saved)

simplify22.0ms (0.7%)

Memory
2.8MiB live, 18.5MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039109
158109
279109
399109
4122109
5145109
6165109
7175109
8179109
Stop Event
saturated
Calls
Call 1
Inputs
(-.f64 (*.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) (*.f64 (*.f64 #s(literal 4 binary64) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)))
Outputs
(-.f64 (*.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) (*.f64 (*.f64 #s(literal 4 binary64) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)))
(-.f64 (*.f64 (/.f64 (/.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) (*.f64 (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) #s(literal 2 binary64)))) x-scale) y-scale) (/.f64 (/.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) (*.f64 (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) #s(literal 2 binary64)))) x-scale) y-scale)) (*.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) b) #s(literal 2 binary64)) (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) a) #s(literal 2 binary64))) y-scale) y-scale) (*.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) b) #s(literal 2 binary64)) (pow.f64 (*.f64 (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64)))) a) #s(literal 2 binary64))) x-scale) x-scale) #s(literal 4 binary64))))

soundness1.0ms (0%)

Memory
0.3MiB live, 0.3MiB allocated
Stop Event
fuel
Compiler

Compiled 109 to 39 computations (64.2% saved)

preprocess20.0ms (0.6%)

Memory
-4.3MiB live, 13.2MiB allocated
Remove

(abs a)

(abs b)

(abs angle)

(abs x-scale)

(abs y-scale)

Compiler

Compiled 2 616 to 936 computations (64.2% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...