Details

Time bar (total: 3.6s)

analyze278.0ms (7.7%)

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
25.8%25%71.8%0.1%3.1%0%0%9
36.4%34.3%60.1%0.1%5.5%0%0%10
44.5%41.3%51.5%0.1%7%0%0%11
51.5%46.8%44.1%0.1%9%0%0%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample1.6s (45.8%)

Results
1.4s8256×body256valid
227.0ms1250×body256infinite
Bogosity

preprocess27.0ms (0.8%)

Algorithm
egg-herbie
Rules
14×rational.json-simplify-2
14×rational.json-simplify-1
rational.json-simplify-16
trig.json-simplify-45
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
021100
137100
240100
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 y x) (*.f64 (-.f64 y 1) z))
(+.f64 (*.f64 z y) (*.f64 (-.f64 z 1) x))
(+.f64 (*.f64 x z) (*.f64 (-.f64 x 1) y))
Outputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 (+.f64 x -1) z) (*.f64 x y))
(+.f64 (*.f64 y x) (*.f64 (-.f64 y 1) z))
(+.f64 (*.f64 x y) (*.f64 z (+.f64 y -1)))
(+.f64 (*.f64 z y) (*.f64 (-.f64 z 1) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 z -1)))
(+.f64 (*.f64 x z) (*.f64 (-.f64 x 1) y))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 x -1)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify19.0ms (0.5%)

Algorithm
egg-herbie
Rules
rational.json-simplify-2
rational.json-simplify-1
rational.json-simplify-16
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
11525
21625
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
Outputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 x y) (*.f64 (+.f64 x -1) z))

eval1.0ms (0%)

Compiler

Compiled 21 to 12 computations (42.9% saved)

prune2.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 12 to 8 computations (33.3% saved)

localize24.0ms (0.7%)

Local error

Found 1 expressions with local error:

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

Compiled 27 to 14 computations (48.1% saved)

series5.0ms (0.1%)

Counts
1 → 12
Calls

6 calls:

TimeVariablePointExpression
2.0ms
z
@inf
(*.f64 (-.f64 x 1) z)
1.0ms
x
@-inf
(*.f64 (-.f64 x 1) z)
1.0ms
x
@inf
(*.f64 (-.f64 x 1) z)
1.0ms
z
@-inf
(*.f64 (-.f64 x 1) z)
1.0ms
z
@0
(*.f64 (-.f64 x 1) z)

rewrite129.0ms (3.6%)

Algorithm
batch-egg-rewrite
Rules
1416×rational.json-5
1414×exponential.json-3
1414×rational.json-1
1414×rational.json-2
1414×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
16113
219913
370713
4274913
Stop Event
node limit
Counts
1 → 9
Calls
Call 1
Inputs
(*.f64 (-.f64 x 1) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 x -1) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 x -1) z))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x -1) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 (+.f64 x -1) z)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 0 (-.f64 -1 (*.f64 (+.f64 x -1) z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -1) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x -1) z) (/.f64 (*.f64 (+.f64 x -1) z) (*.f64 (+.f64 x -1) z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 x -1) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 (+.f64 x -1) z)))))))

simplify196.0ms (5.5%)

Algorithm
egg-herbie
Rules
1138×rational.json-simplify-1
926×rational.json-simplify-111
780×rational.json-simplify-2
712×rational.json-simplify-41
574×rational.json-simplify-42
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
026363
154253
2122253
3381253
41578253
54679253
67143253
Stop Event
node limit
Counts
21 → 14
Calls
Call 1
Inputs
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(+.f64 (*.f64 (+.f64 x -1) z) 0)
(+.f64 0 (*.f64 (+.f64 x -1) z))
(-.f64 (*.f64 (+.f64 x -1) z) 0)
(-.f64 0 (neg.f64 (*.f64 (+.f64 x -1) z)))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 (+.f64 x -1) z))) 1)
(/.f64 (*.f64 (+.f64 x -1) z) 1)
(/.f64 (*.f64 (+.f64 x -1) z) (/.f64 (*.f64 (+.f64 x -1) z) (*.f64 (+.f64 x -1) z)))
(pow.f64 (*.f64 (+.f64 x -1) z) 1)
(neg.f64 (neg.f64 (*.f64 (+.f64 x -1) z)))
Outputs
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(*.f64 z x)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(*.f64 z x)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 (*.f64 (+.f64 x -1) z) 0)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(+.f64 0 (*.f64 (+.f64 x -1) z))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(-.f64 (*.f64 (+.f64 x -1) z) 0)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(-.f64 0 (neg.f64 (*.f64 (+.f64 x -1) z)))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 (+.f64 x -1) z))) 1)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 (+.f64 x -1) z) 1)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(/.f64 (*.f64 (+.f64 x -1) z) (/.f64 (*.f64 (+.f64 x -1) z) (*.f64 (+.f64 x -1) z)))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(pow.f64 (*.f64 (+.f64 x -1) z) 1)
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))
(neg.f64 (neg.f64 (*.f64 (+.f64 x -1) z)))
(+.f64 (*.f64 -1 z) (*.f64 z x))
(*.f64 z (+.f64 -1 x))

eval5.0ms (0.1%)

Compiler

Compiled 157 to 84 computations (46.5% saved)

prune8.0ms (0.2%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New11314
Fresh000
Picked011
Done000
Total11415
Error
0b
Counts
15 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(+.f64 (*.f64 x y) (+.f64 (*.f64 -1 z) (*.f64 z x)))
0.0b
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
27.5b
(+.f64 (*.f64 x y) (*.f64 z x))
11.2b
(+.f64 (*.f64 x y) (neg.f64 z))
Compiler

Compiled 45 to 29 computations (35.6% saved)

localize12.0ms (0.3%)

Compiler

Compiled 17 to 6 computations (64.7% saved)

localize14.0ms (0.4%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 6 computations (68.4% saved)

series6.0ms (0.2%)

Counts
1 → 36
Calls

9 calls:

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

rewrite104.0ms (2.9%)

Algorithm
batch-egg-rewrite
Rules
1964×rational.json-5
1962×rational.json-1
1962×rational.json-2
1962×rational.json-4
1962×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
17113
224413
391113
4370913
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 z x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 y z)) (/.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.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 (+.f64 y z) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) (*.f64 (/.f64 1 x) (+.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))) (/.f64 1 (*.f64 x (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))) (*.f64 (/.f64 1 (*.f64 x (+.f64 y z))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (*.f64 x (+.f64 y z))) (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))) (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z)))) (/.f64 (/.f64 1 (*.f64 x (+.f64 y z))) (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 y z)) (/.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 y z)) 1)))))

simplify186.0ms (5.2%)

Algorithm
egg-herbie
Rules
1688×rational.json-simplify-47
1598×rational.json-simplify-2
1130×rational.json-simplify-43
1022×rational.json-simplify-50
968×rational.json-simplify-54
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
040614
183614
2303614
31859614
46145614
Stop Event
node limit
Counts
50 → 18
Calls
Call 1
Inputs
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(-.f64 (*.f64 x (+.f64 y z)) 0)
(*.f64 x (+.f64 y z))
(*.f64 (*.f64 x (+.f64 y z)) 1)
(*.f64 (*.f64 x (+.f64 y z)) (/.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))))
(*.f64 1 (*.f64 x (+.f64 y z)))
(*.f64 (+.f64 y z) x)
(*.f64 (*.f64 x x) (*.f64 (/.f64 1 x) (+.f64 y z)))
(*.f64 (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))) (/.f64 1 (*.f64 x (+.f64 y z))))
(*.f64 (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))) (*.f64 (/.f64 1 (*.f64 x (+.f64 y z))) 1))
(*.f64 (/.f64 1 (*.f64 x (+.f64 y z))) (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))))
(*.f64 (*.f64 (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))) (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z)))) (/.f64 (/.f64 1 (*.f64 x (+.f64 y z))) (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z)))))
(/.f64 (*.f64 x (+.f64 y z)) 1)
(/.f64 (*.f64 x (+.f64 y z)) (/.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))))
(pow.f64 (*.f64 x (+.f64 y z)) 1)
Outputs
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 (+.f64 y z) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 (+.f64 y z) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 (+.f64 y z) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) (*.f64 -1 y)) x))
(*.f64 (+.f64 y z) x)
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(-.f64 (*.f64 x (+.f64 y z)) 0)
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 (*.f64 x (+.f64 y z)) 1)
(*.f64 (+.f64 y z) x)
(*.f64 (*.f64 x (+.f64 y z)) (/.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))))
(*.f64 (+.f64 y z) x)
(*.f64 1 (*.f64 x (+.f64 y z)))
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (*.f64 x x) (*.f64 (/.f64 1 x) (+.f64 y z)))
(*.f64 (+.f64 y z) x)
(*.f64 (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))) (/.f64 1 (*.f64 x (+.f64 y z))))
(*.f64 (+.f64 y z) x)
(*.f64 (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))) (*.f64 (/.f64 1 (*.f64 x (+.f64 y z))) 1))
(*.f64 (+.f64 y z) x)
(*.f64 (/.f64 1 (*.f64 x (+.f64 y z))) (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))))
(*.f64 (+.f64 y z) x)
(*.f64 (*.f64 (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))) (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z)))) (/.f64 (/.f64 1 (*.f64 x (+.f64 y z))) (*.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z)))))
(*.f64 (+.f64 y z) x)
(/.f64 (*.f64 x (+.f64 y z)) 1)
(*.f64 (+.f64 y z) x)
(/.f64 (*.f64 x (+.f64 y z)) (/.f64 (*.f64 x (+.f64 y z)) (*.f64 x (+.f64 y z))))
(*.f64 (+.f64 y z) x)
(pow.f64 (*.f64 x (+.f64 y z)) 1)
(*.f64 (+.f64 y z) x)

localize23.0ms (0.6%)

Compiler

Compiled 34 to 15 computations (55.9% saved)

eval5.0ms (0.1%)

Compiler

Compiled 219 to 52 computations (76.3% saved)

prune11.0ms (0.3%)

Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New15318
Fresh000
Picked011
Done033
Total15722
Error
0b
Counts
22 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(+.f64 (*.f64 x y) (+.f64 (*.f64 -1 z) (*.f64 z x)))
0.0b
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
27.5b
(+.f64 (*.f64 x y) (*.f64 z x))
11.2b
(+.f64 (*.f64 x y) (neg.f64 z))
27.5b
(*.f64 (+.f64 y z) x)
51.3b
(*.f64 z x)
38.6b
(*.f64 y x)
Compiler

Compiled 65 to 42 computations (35.4% saved)

localize6.0ms (0.2%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize6.0ms (0.2%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize10.0ms (0.3%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

9 calls:

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

rewrite96.0ms (2.7%)

Algorithm
batch-egg-rewrite
Rules
1570×rational.json-5
1568×exponential.json-3
1568×rational.json-1
1568×rational.json-2
1568×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
16013
220513
376213
4301013
Stop Event
node limit
Counts
1 → 9
Calls
Call 1
Inputs
(*.f64 (+.f64 y z) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y z) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 y z) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 (+.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 0 (-.f64 -1 (*.f64 (+.f64 y z) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y z) x) (/.f64 (*.f64 (+.f64 y z) x) (*.f64 (+.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 y z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 (+.f64 y z) x)))))))

simplify189.0ms (5.3%)

Algorithm
egg-herbie
Rules
1126×rational.json-simplify-1
854×rational.json-simplify-111
756×rational.json-simplify-2
728×rational.json-simplify-104
712×rational.json-simplify-41
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
027555
154393
2121393
3379393
41549393
54487393
66634393
Stop Event
node limit
Counts
33 → 15
Calls
Call 1
Inputs
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 (+.f64 y z) x) 0)
(+.f64 0 (*.f64 (+.f64 y z) x))
(-.f64 (*.f64 (+.f64 y z) x) 0)
(-.f64 0 (neg.f64 (*.f64 (+.f64 y z) x)))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 (+.f64 y z) x))) 1)
(/.f64 (*.f64 (+.f64 y z) x) 1)
(/.f64 (*.f64 (+.f64 y z) x) (/.f64 (*.f64 (+.f64 y z) x) (*.f64 (+.f64 y z) x)))
(pow.f64 (*.f64 (+.f64 y z) x) 1)
(neg.f64 (neg.f64 (*.f64 (+.f64 y z) x)))
Outputs
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 y x)
(*.f64 x y)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 (*.f64 (+.f64 y z) x) 0)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(+.f64 0 (*.f64 (+.f64 y z) x))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(-.f64 (*.f64 (+.f64 y z) x) 0)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(-.f64 0 (neg.f64 (*.f64 (+.f64 y z) x)))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(-.f64 (-.f64 0 (-.f64 -1 (*.f64 (+.f64 y z) x))) 1)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 (+.f64 y z) x) 1)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(/.f64 (*.f64 (+.f64 y z) x) (/.f64 (*.f64 (+.f64 y z) x) (*.f64 (+.f64 y z) x)))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(pow.f64 (*.f64 (+.f64 y z) x) 1)
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))
(neg.f64 (neg.f64 (*.f64 (+.f64 y z) x)))
(+.f64 (*.f64 z x) (*.f64 x y))
(*.f64 x (+.f64 z y))

eval4.0ms (0.1%)

Compiler

Compiled 109 to 34 computations (68.8% saved)

prune11.0ms (0.3%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New15015
Fresh000
Picked011
Done066
Total15722
Error
0b
Counts
22 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(+.f64 (*.f64 x y) (+.f64 (*.f64 -1 z) (*.f64 z x)))
0.0b
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
27.5b
(+.f64 (*.f64 x y) (*.f64 z x))
11.2b
(+.f64 (*.f64 x y) (neg.f64 z))
27.5b
(*.f64 (+.f64 y z) x)
51.3b
(*.f64 z x)
38.6b
(*.f64 y x)
Compiler

Compiled 65 to 42 computations (35.4% saved)

regimes45.0ms (1.2%)

Counts
7 → 1
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 z x)
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 x y) (neg.f64 z))
(+.f64 (*.f64 x y) (*.f64 z x))
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
(+.f64 (*.f64 x y) (+.f64 (*.f64 -1 z) (*.f64 z x)))
Outputs
(+.f64 (*.f64 x y) (+.f64 (*.f64 -1 z) (*.f64 z x)))
Calls

4 calls:

11.0ms
y
10.0ms
z
10.0ms
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
10.0ms
x
Results
ErrorSegmentsBranch
0b1x
0b1y
0b1z
0b1(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
Compiler

Compiled 71 to 36 computations (49.3% saved)

regimes45.0ms (1.2%)

Counts
6 → 1
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 z x)
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 x y) (neg.f64 z))
(+.f64 (*.f64 x y) (*.f64 z x))
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
Outputs
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
Calls

4 calls:

12.0ms
y
11.0ms
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
10.0ms
x
9.0ms
z
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
Compiler

Compiled 60 to 32 computations (46.7% saved)

regimes66.0ms (1.8%)

Counts
5 → 3
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 z x)
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 x y) (neg.f64 z))
(+.f64 (*.f64 x y) (*.f64 z x))
Outputs
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 x y) (neg.f64 z))
(+.f64 (*.f64 x y) (*.f64 z x))
Calls

3 calls:

25.0ms
y
24.0ms
x
10.0ms
z
Results
ErrorSegmentsBranch
0.3b3x
10.0b3y
11.2b1z
Compiler

Compiled 39 to 20 computations (48.7% saved)

bsearch52.0ms (1.5%)

Algorithm
binary-search
Steps
TimeLeftRight
28.0ms
9.160596511036474e-17
5.879750170737188e-10
24.0ms
-15819777517316.256
-5173567719.763458
Results
45.0ms272×body256valid
0.0msbody256infinite
Compiler

Compiled 359 to 243 computations (32.3% saved)

regimes59.0ms (1.6%)

Counts
4 → 3
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 z x)
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 x y) (neg.f64 z))
Outputs
(*.f64 (+.f64 y z) x)
(+.f64 (*.f64 x y) (neg.f64 z))
(*.f64 (+.f64 y z) x)
Calls

3 calls:

26.0ms
x
23.0ms
y
8.0ms
z
Results
ErrorSegmentsBranch
0.3b3x
10.0b3y
11.2b1z
Compiler

Compiled 32 to 19 computations (40.6% saved)

bsearch51.0ms (1.4%)

Algorithm
binary-search
Steps
TimeLeftRight
27.0ms
9.160596511036474e-17
5.879750170737188e-10
25.0ms
-15819777517316.256
-5173567719.763458
Results
45.0ms272×body256valid
0.0msbody256infinite
Compiler

Compiled 341 to 234 computations (31.4% saved)

regimes24.0ms (0.7%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 z x)
(*.f64 (+.f64 y z) x)
Outputs
(*.f64 (+.f64 y z) x)
Calls

3 calls:

8.0ms
x
7.0ms
y
7.0ms
z
Results
ErrorSegmentsBranch
27.5b1x
27.5b1y
27.5b1z
Compiler

Compiled 26 to 16 computations (38.5% saved)

regimes71.0ms (2%)

Accuracy

Total -29.8b remaining (-92.6%)

Threshold costs -29.8b (-92.6%)

Counts
2 → 3
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 z x)
Outputs
(*.f64 y x)
(*.f64 z x)
(*.f64 y x)
Calls

3 calls:

24.0ms
y
23.0ms
x
22.0ms
z
Results
ErrorSegmentsBranch
35.2b4x
32.2b3y
35.9b3z
Compiler

Compiled 21 to 14 computations (33.3% saved)

bsearch51.0ms (1.4%)

Algorithm
binary-search
Steps
TimeLeftRight
27.0ms
1.6571675228128715e-164
4.686261828674166e-161
23.0ms
-3.3401636969898437e-144
-9.697653605860033e-146
Results
45.0ms240×body256valid
Compiler

Compiled 228 to 163 computations (28.5% saved)

simplify9.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
039243
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (+.f64 (*.f64 -1 z) (*.f64 z x)))
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
(if (<=.f64 x -5200000000) (*.f64 (+.f64 y z) x) (if (<=.f64 x 5609415803011879/9671406556917033397649408) (+.f64 (*.f64 x y) (neg.f64 z)) (+.f64 (*.f64 x y) (*.f64 z x))))
(if (<=.f64 x -5200000000) (*.f64 (+.f64 y z) x) (if (<=.f64 x 5609415803011879/9671406556917033397649408) (+.f64 (*.f64 x y) (neg.f64 z)) (*.f64 (+.f64 y z) x)))
(*.f64 (+.f64 y z) x)
(if (<=.f64 y -2284604661291467/878694100496718043517683302282418331810487718418343092402491322775749527474899974671687634004666183037093927858109549828751614463963730408009475621262727315456) (*.f64 y x) (if (<=.f64 y 587577888171625/1013065324433836171511818326096474890383898005918563696288002277756507034036354527929615978746851512277392062160962106733983191180520452956027069051297354415786421338721071661056) (*.f64 z x) (*.f64 y x)))
(*.f64 y x)
Outputs
(+.f64 (*.f64 x y) (+.f64 (*.f64 -1 z) (*.f64 z x)))
(+.f64 (*.f64 x y) (*.f64 (-.f64 x 1) z))
(if (<=.f64 x -5200000000) (*.f64 (+.f64 y z) x) (if (<=.f64 x 5609415803011879/9671406556917033397649408) (+.f64 (*.f64 x y) (neg.f64 z)) (+.f64 (*.f64 x y) (*.f64 z x))))
(if (<=.f64 x -5200000000) (*.f64 (+.f64 y z) x) (if (<=.f64 x 5609415803011879/9671406556917033397649408) (+.f64 (*.f64 x y) (neg.f64 z)) (*.f64 (+.f64 y z) x)))
(*.f64 (+.f64 y z) x)
(if (<=.f64 y -2284604661291467/878694100496718043517683302282418331810487718418343092402491322775749527474899974671687634004666183037093927858109549828751614463963730408009475621262727315456) (*.f64 y x) (if (<=.f64 y 587577888171625/1013065324433836171511818326096474890383898005918563696288002277756507034036354527929615978746851512277392062160962106733983191180520452956027069051297354415786421338721071661056) (*.f64 z x) (*.f64 y x)))
(*.f64 y x)
Compiler

Compiled 116 to 67 computations (42.2% saved)

soundness0.0ms (0%)

end94.0ms (2.6%)

Compiler

Compiled 98 to 37 computations (62.2% saved)

Profiling

Loading profile data...