Details

Time bar (total: 9.3s)

analyze180.0ms (1.9%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
12.5%12.5%87.4%0.1%0%0%0%7
18.8%18.7%81.1%0.1%0%0%0%8
28.1%28.1%71.8%0.1%0%0%0%9
39.7%37.4%56.9%0.1%5.5%0%0%10
46.5%43.7%50.3%0.1%5.9%0%0%11
55.2%51.9%42.1%0.1%5.9%0%0%12
Compiler

Compiled 9 to 6 computations (33.3% saved)

sample836.0ms (9%)

Results
766.0ms8256×body256valid
59.0ms664×body256infinite
Bogosity

preprocess3.2s (34%)

Algorithm
egglog
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(-.f64 x (*.f64 y z))
(-.f64 y (*.f64 x z))
(-.f64 z (*.f64 y x))
(-.f64 x (*.f64 z y))
Outputs
(-.f64 x (*.f64 y z))
(-.f64 y (*.f64 x z))
(-.f64 z (*.f64 y x))
(-.f64 x (*.f64 z y))
(-.f64 x (*.f64 y z))
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify1.9s (20.4%)

Algorithm
egglog
Counts
1 → 1
Calls
Call 1
Inputs
(-.f64 x (*.f64 y z))
Outputs
(-.f64 x (*.f64 y z))

eval1.0ms (0%)

Compiler

Compiled 8 to 5 computations (37.5% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.0b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(-.f64 x (*.f64 y z))
Compiler

Compiled 8 to 5 computations (37.5% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(-.f64 x (*.f64 y z))
Compiler

Compiled 14 to 5 computations (64.3% saved)

series15.0ms (0.2%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
z
@-inf
(-.f64 x (*.f64 y z))
1.0ms
y
@inf
(-.f64 x (*.f64 y z))
0.0ms
x
@0
(-.f64 x (*.f64 y z))
0.0ms
x
@inf
(-.f64 x (*.f64 y z))
0.0ms
z
@inf
(-.f64 x (*.f64 y z))
Compiler

Compiled 1110 to 480 computations (56.8% saved)

rewrite1.5s (16.1%)

Algorithm
batch-egg-rewrite
Rules
63×egg-rr
Counts
1 → 63
Calls
Call 1
Inputs
(-.f64 x (*.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 y z) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 0 (+.f64 (cbrt.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2)) (*.f64 0 (cbrt.f64 (-.f64 (*.f64 y z) x))))) (cbrt.f64 (-.f64 x (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 0 (-.f64 (cbrt.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2)) (*.f64 0 (cbrt.f64 (-.f64 x (*.f64 y z)))))) (+.f64 0 (cbrt.f64 (-.f64 x (*.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (pow.f64 (*.f64 y z) 2)) (-.f64 (cbrt.f64 (pow.f64 x 2)) (*.f64 (cbrt.f64 (*.f64 (neg.f64 y) z)) (cbrt.f64 x)))) (+.f64 (cbrt.f64 (*.f64 (neg.f64 y) z)) (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (pow.f64 x 2)) (-.f64 (cbrt.f64 (pow.f64 (*.f64 y z) 2)) (*.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 (neg.f64 y) z))))) (-.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 x (*.f64 y z))) (cbrt.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2)) (cbrt.f64 (-.f64 x (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (pow.f64 x 2)) (*.f64 (cbrt.f64 (*.f64 y z)) (+.f64 (cbrt.f64 (*.f64 y z)) (cbrt.f64 x)))) (-.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (*.f64 y z) x)) (neg.f64 (cbrt.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 x (*.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (-.f64 (*.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (neg.f64 y) z) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 y z) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y (neg.f64 z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 y z)) (neg.f64 (cbrt.f64 (pow.f64 (*.f64 y z) 2))) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 z) y x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (neg.f64 y) (cbrt.f64 z)) (cbrt.f64 (pow.f64 z 2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1 (*.f64 y z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (neg.f64 y) z)) (cbrt.f64 (pow.f64 (*.f64 y z) 2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 y) z x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (neg.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 0 (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 0 (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (neg.f64 y) z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 x) (cbrt.f64 (pow.f64 x 2)) (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 x 2)) (cbrt.f64 x) (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 1 (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 x (*.f64 y z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 x (*.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 x (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 x (*.f64 y z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (fma.f64 y z x) 0) (/.f64 (-.f64 (pow.f64 x 2) (pow.f64 (*.f64 y z) 2)) (fma.f64 y z x)) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 x 0) (*.f64 x (/.f64 (-.f64 x (*.f64 y z)) x)) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (-.f64 (*.f64 y z) x) 0) (/.f64 (neg.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2)) (-.f64 (*.f64 y z) x)) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (neg.f64 (fma.f64 y z x)) 0) (/.f64 (-.f64 (pow.f64 x 2) (pow.f64 (*.f64 y z) 2)) (fma.f64 y z x)) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 (neg.f64 y) z) 0) (*.f64 (*.f64 (neg.f64 y) z) (+.f64 1 (/.f64 x (*.f64 (neg.f64 y) z)))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (-.f64 (*.f64 y z) x) 0) (/.f64 (pow.f64 (-.f64 x (*.f64 y z)) 3) (pow.f64 (-.f64 x (*.f64 y z)) 2)) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (/.f64 (pow.f64 (-.f64 x (*.f64 y z)) 3) (pow.f64 (-.f64 x (*.f64 y z)) 2)) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (-.f64 x (*.f64 y z)) 0) (/.f64 1 (/.f64 1 (-.f64 x (*.f64 y z)))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (/.f64 (pow.f64 (-.f64 x (*.f64 y z)) 3) (+.f64 0 (-.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2) (*.f64 0 (-.f64 x (*.f64 y z)))))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 (neg.f64 y) z) 0) (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 x x (*.f64 (*.f64 y z) (fma.f64 y z x)))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (*.f64 0 (+.f64 1 (/.f64 (-.f64 x (*.f64 y z)) 0))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (neg.f64 x) 0) (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 y z) 3)) (+.f64 (pow.f64 (*.f64 y z) 2) (+.f64 (pow.f64 x 2) (*.f64 (*.f64 (neg.f64 y) z) (neg.f64 x))))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (+.f64 0 (-.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2) (*.f64 0 (-.f64 x (*.f64 y z))))) 0) (/.f64 (pow.f64 (-.f64 x (*.f64 y z)) 3) (+.f64 0 (-.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2) (*.f64 0 (-.f64 x (*.f64 y z)))))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (fma.f64 x x (*.f64 (*.f64 y z) (fma.f64 y z x))) 0) (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 x x (*.f64 (*.f64 y z) (fma.f64 y z x)))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (+.f64 (pow.f64 (*.f64 y z) 2) (+.f64 (pow.f64 x 2) (*.f64 (*.f64 (neg.f64 y) z) (neg.f64 x)))) 0) (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 y z) 3)) (+.f64 (pow.f64 (*.f64 y z) 2) (+.f64 (pow.f64 x 2) (*.f64 (*.f64 (neg.f64 y) z) (neg.f64 x))))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (-.f64 x (*.f64 y z)) 0) (/.f64 (pow.f64 (-.f64 x (*.f64 y z)) 3) (+.f64 0 (-.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2) (*.f64 0 (-.f64 x (*.f64 y z)))))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 x 0) (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 x x (*.f64 (*.f64 y z) (fma.f64 y z x)))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 (neg.f64 y) z) 0) (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 y z) 3)) (+.f64 (pow.f64 (*.f64 y z) 2) (+.f64 (pow.f64 x 2) (*.f64 (*.f64 (neg.f64 y) z) (neg.f64 x))))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 1 0) (-.f64 x (*.f64 y z)) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (pow.f64 (-.f64 x (*.f64 y z)) 2) 0) (/.f64 (pow.f64 (-.f64 x (*.f64 y z)) 3) (pow.f64 (-.f64 x (*.f64 y z)) 2)) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 y z) 0) (/.f64 (-.f64 (pow.f64 x 3) (pow.f64 (*.f64 y z) 3)) (fma.f64 x x (*.f64 (*.f64 y z) (fma.f64 y z x)))) (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (neg.f64 y) z) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 (neg.f64 y) z) 0) x)))))

simplify1.7s (18.4%)

Algorithm
egglog

end0.0ms (0%)

Profiling

Loading profile data...