Details

Time bar (total: 11.2s)

analyze171.0ms (1.5%)

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
38.3%35.9%57.7%0.1%6.2%0%0%10
45.8%42.9%50.7%0.1%6.2%0%0%11
53.4%48.8%42.5%0.1%8.6%0%0%12
Compiler

Compiled 11 to 8 computations (27.3% saved)

sample2.6s (23.4%)

Results
2.5s8256×body256valid
76.0ms846×body256infinite
Bogosity

preprocess15.0ms (0.1%)

Algorithm
egg-herbie
Rules
14×rational.json-simplify-2
swap-y-z
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01876
12476
033
133
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
1
Call 2
Inputs
(*.f64 x (-.f64 1 (*.f64 y z)))
(*.f64 y (-.f64 1 (*.f64 x z)))
(*.f64 z (-.f64 1 (*.f64 y x)))
(*.f64 x (-.f64 1 (*.f64 z y)))
Outputs
(*.f64 x (-.f64 1 (*.f64 y z)))
(*.f64 y (-.f64 1 (*.f64 x z)))
(*.f64 z (-.f64 1 (*.f64 y x)))
(*.f64 z (-.f64 1 (*.f64 x y)))
(*.f64 x (-.f64 1 (*.f64 z y)))
(*.f64 x (-.f64 1 (*.f64 y z)))
Symmetry

(sort y z)

Compiler

Compiled 13 to 10 computations (23.1% saved)

simplify7.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0919
11119
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 x (-.f64 1 (*.f64 y z)))
Outputs
(*.f64 x (-.f64 1 (*.f64 y z)))

eval0.0ms (0%)

Compiler

Compiled 10 to 7 computations (30% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 10 to 7 computations (30% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 22 to 10 computations (54.5% saved)

series6.0ms (0.1%)

Counts
2 → 60
Calls

15 calls:

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

rewrite116.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1970×bool.json-1
1422×rational.json-simplify-35
1210×bool.json-2
1164×rational.json-1
1164×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0932
19632
227632
354932
4107832
5234732
6478832
7776232
Stop Event
node limit
Counts
2 → 46
Calls
Call 1
Inputs
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 1 (*.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 1 (*.f64 y z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (-.f64 1 (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 (*.f64 y z)) (*.f64 x 1/2)) (*.f64 (-.f64 1 (*.f64 y z)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 1 (*.f64 y z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 (*.f64 y z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 y z)) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 1 (*.f64 y z)) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z)))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z))))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z))))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z)))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (-.f64 1 (*.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (-.f64 1 (*.f64 y z))) (*.f64 x (-.f64 1 (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (-.f64 1 (*.f64 y z))) (*.f64 x (-.f64 1 (*.f64 y z))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 1 (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (neg.f64 (+.f64 (*.f64 y z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (+.f64 (*.f64 y z) -2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 (*.f64 y z)) 1/2) (*.f64 (-.f64 1 (*.f64 y z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 1 (+.f64 (*.f64 y z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 1 (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 (*.f64 y z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 1 (*.f64 y z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 y z) -1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (+.f64 (*.f64 y z) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 (*.f64 y z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (-.f64 1 (*.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 (*.f64 y z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 1 (*.f64 y z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 1 (*.f64 y z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 y z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 y z) -1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 y z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (*.f64 y z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (*.f64 y z) -1)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 y z) -1) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1)))) (*.f64 2 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1))))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4)) (neg.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (+.f64 (*.f64 y z) -1))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 1 (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 1 (*.f64 y z)) (-.f64 1 (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 1 (*.f64 y z)) (-.f64 1 (*.f64 y z)))))))

simplify224.0ms (2%)

Algorithm
egg-herbie
Rules
2082×rational.json-simplify-53
1994×rational.json-simplify-35
1848×rational.json-simplify-2
890×rational.json-simplify-1
754×rational.json-simplify-51
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01062026
12431868
26221656
313251656
430641656
536441656
639201656
741211656
845391656
954321656
1075121656
Stop Event
node limit
Counts
106 → 62
Calls
Call 1
Inputs
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
1
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
1
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(*.f64 -1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 (*.f64 x (-.f64 1 (*.f64 y z))) 0)
(+.f64 0 (*.f64 x (-.f64 1 (*.f64 y z))))
(+.f64 (*.f64 (-.f64 1 (*.f64 y z)) (*.f64 x 1/2)) (*.f64 (-.f64 1 (*.f64 y z)) (*.f64 x 1/2)))
(-.f64 (*.f64 x (-.f64 1 (*.f64 y z))) 0)
(/.f64 (*.f64 x (-.f64 1 (*.f64 y z))) 1)
(/.f64 (*.f64 (-.f64 1 (*.f64 y z)) (+.f64 x x)) 2)
(/.f64 (*.f64 x (*.f64 (-.f64 1 (*.f64 y z)) 4)) 4)
(/.f64 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z))) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z)))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z))))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z))))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z)))))) 64)
(+.f64 (-.f64 1 (*.f64 y z)) 0)
(+.f64 0 (-.f64 1 (*.f64 y z)))
(+.f64 -1 (neg.f64 (+.f64 (*.f64 y z) -2)))
(+.f64 (neg.f64 (+.f64 (*.f64 y z) -2)) -1)
(+.f64 (*.f64 (-.f64 1 (*.f64 y z)) 1/2) (*.f64 (-.f64 1 (*.f64 y z)) 1/2))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 y z) -2)))
(*.f64 1 (-.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 y z)) 1)
(*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 1/2))
(*.f64 (*.f64 (-.f64 1 (*.f64 y z)) 2) 1/2)
(*.f64 4 (/.f64 (-.f64 1 (*.f64 y z)) 4))
(*.f64 (+.f64 (*.f64 y z) -1) -1)
(*.f64 -1 (+.f64 (*.f64 y z) -1))
(*.f64 (*.f64 (-.f64 1 (*.f64 y z)) 4) 1/4)
(*.f64 1/2 (*.f64 (-.f64 1 (*.f64 y z)) 2))
(*.f64 (*.f64 (-.f64 1 (*.f64 y z)) 1/2) 2)
(*.f64 1/4 (*.f64 (-.f64 1 (*.f64 y z)) 4))
(*.f64 (/.f64 (-.f64 1 (*.f64 y z)) 4) 4)
(/.f64 (-.f64 1 (*.f64 y z)) 1)
(/.f64 (*.f64 (-.f64 1 (*.f64 y z)) 2) 2)
(/.f64 (+.f64 (*.f64 y z) -1) -1)
(/.f64 (*.f64 (-.f64 1 (*.f64 y z)) 4) 4)
(/.f64 (*.f64 (-.f64 1 (*.f64 y z)) 8) 8)
(/.f64 (*.f64 2 (+.f64 (*.f64 y z) -1)) -2)
(/.f64 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8)) 16)
(/.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4) -4)
(/.f64 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1))) 2)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8))) 32)
(/.f64 (*.f64 2 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1)))) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 y z) -1) 4)) -8)
(/.f64 (neg.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4)) 4)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8)))) 64)
(/.f64 (+.f64 (*.f64 2 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1)))) (*.f64 2 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1))))) 8)
(/.f64 (+.f64 (neg.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4)) (neg.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4))) 8)
(neg.f64 (+.f64 (*.f64 y z) -1))
Outputs
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 (*.f64 z x) -1))
(*.f64 y (neg.f64 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 (*.f64 z x) -1))
(*.f64 y (neg.f64 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 (*.f64 z x) -1))
(*.f64 y (neg.f64 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 (*.f64 z x) -1))
(*.f64 y (neg.f64 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (*.f64 y (*.f64 (*.f64 z x) -1)))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
1
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (*.f64 z -1))
(*.f64 y (neg.f64 z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (*.f64 z -1))
(*.f64 y (neg.f64 z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
1
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (*.f64 z -1))
(*.f64 y (neg.f64 z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 -1 (*.f64 y z))
(*.f64 y (*.f64 z -1))
(*.f64 y (neg.f64 z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 1 (*.f64 -1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 (*.f64 x (-.f64 1 (*.f64 y z))) 0)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(+.f64 0 (*.f64 x (-.f64 1 (*.f64 y z))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(+.f64 (*.f64 (-.f64 1 (*.f64 y z)) (*.f64 x 1/2)) (*.f64 (-.f64 1 (*.f64 y z)) (*.f64 x 1/2)))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 (*.f64 x (-.f64 1 (*.f64 y z))) 0)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(/.f64 (*.f64 x (-.f64 1 (*.f64 y z))) 1)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(/.f64 (*.f64 (-.f64 1 (*.f64 y z)) (+.f64 x x)) 2)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(/.f64 (*.f64 x (*.f64 (-.f64 1 (*.f64 y z)) 4)) 4)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(/.f64 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z))) 8)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z)))) 16)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z))))) 32)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z))))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (-.f64 1 (*.f64 y z)))))) 64)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(+.f64 (-.f64 1 (*.f64 y z)) 0)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 0 (-.f64 1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 -1 (neg.f64 (+.f64 (*.f64 y z) -2)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 (neg.f64 (+.f64 (*.f64 y z) -2)) -1)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 (*.f64 (-.f64 1 (*.f64 y z)) 1/2) (*.f64 (-.f64 1 (*.f64 y z)) 1/2))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 y z) -2)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 1 (-.f64 1 (*.f64 y z)))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 (-.f64 1 (*.f64 y z)) 1)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 1/2))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 (*.f64 (-.f64 1 (*.f64 y z)) 2) 1/2)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 4 (/.f64 (-.f64 1 (*.f64 y z)) 4))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 (+.f64 (*.f64 y z) -1) -1)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 -1 (+.f64 (*.f64 y z) -1))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 (*.f64 (-.f64 1 (*.f64 y z)) 4) 1/4)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 1/2 (*.f64 (-.f64 1 (*.f64 y z)) 2))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 (*.f64 (-.f64 1 (*.f64 y z)) 1/2) 2)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 1/4 (*.f64 (-.f64 1 (*.f64 y z)) 4))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(*.f64 (/.f64 (-.f64 1 (*.f64 y z)) 4) 4)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (-.f64 1 (*.f64 y z)) 1)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (*.f64 (-.f64 1 (*.f64 y z)) 2) 2)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (+.f64 (*.f64 y z) -1) -1)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (*.f64 (-.f64 1 (*.f64 y z)) 4) 4)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (*.f64 (-.f64 1 (*.f64 y z)) 8) 8)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (*.f64 2 (+.f64 (*.f64 y z) -1)) -2)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8)) 16)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4) -4)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1))) 2)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8))) 32)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (*.f64 2 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1)))) 4)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 y z) -1) 4)) -8)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (neg.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4)) 4)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 1 (*.f64 y z)) 8)))) 64)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (+.f64 (*.f64 2 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1)))) (*.f64 2 (neg.f64 (*.f64 2 (+.f64 (*.f64 y z) -1))))) 8)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(/.f64 (+.f64 (neg.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4)) (neg.f64 (*.f64 (+.f64 (*.f64 y z) -1) 4))) 8)
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))
(neg.f64 (+.f64 (*.f64 y z) -1))
(+.f64 1 (*.f64 y (*.f64 z -1)))
(+.f64 1 (*.f64 y (neg.f64 z)))
(-.f64 1 (*.f64 y z))

eval11.0ms (0.1%)

Compiler

Compiled 681 to 416 computations (38.9% saved)

prune70.0ms (0.6%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New58462
Fresh000
Picked011
Done000
Total58563
Error
0.1b
Counts
63 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
4.6b
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
39.0b
(*.f64 y (neg.f64 (*.f64 z x)))
3.6b
(*.f64 x (-.f64 1 (*.f64 y z)))
39.7b
(*.f64 x (*.f64 y (neg.f64 z)))
26.8b
x
Compiler

Compiled 43 to 29 computations (32.6% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.5b
(*.f64 x (*.f64 y (neg.f64 z)))
Compiler

Compiled 18 to 6 computations (66.7% saved)

series5.0ms (0%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
2.0ms
z
@inf
(*.f64 x (*.f64 y (neg.f64 z)))
1.0ms
x
@0
(*.f64 x (*.f64 y (neg.f64 z)))
1.0ms
y
@0
(*.f64 x (*.f64 y (neg.f64 z)))
1.0ms
x
@inf
(*.f64 x (*.f64 y (neg.f64 z)))
1.0ms
z
@0
(*.f64 x (*.f64 y (neg.f64 z)))

rewrite145.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
1810×bool.json-1
1810×bool.json-2
1218×bool.json-3
1192×rational.json-simplify-2
1024×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
19417
227417
361617
4134417
5328717
6709317
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 x (*.f64 y (neg.f64 z)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y (neg.f64 z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 y (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 y (*.f64 z -1/2))) (*.f64 x (*.f64 y (*.f64 z -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (*.f64 y (neg.f64 z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 y (neg.f64 z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 x (*.f64 y -2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x y) (*.f64 z -4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8)) (*.f64 2 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (*.f64 y (neg.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (*.f64 y (neg.f64 z))) (*.f64 x (*.f64 y (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (*.f64 y (neg.f64 z))) (*.f64 x (*.f64 y (neg.f64 z))))))))

simplify230.0ms (2%)

Algorithm
egg-herbie
Rules
3580×rational.json-simplify-35
2824×rational.json-simplify-2
1014×rational.json-simplify-43
836×rational.json-simplify-44
788×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
048799
1118799
2269799
3653799
42660799
54325799
64679799
74805799
84822799
94875799
106025799
116761799
127455799
Stop Event
node limit
Counts
47 → 15
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 x (*.f64 y (neg.f64 z))) 0)
(+.f64 0 (*.f64 x (*.f64 y (neg.f64 z))))
(+.f64 (*.f64 x (*.f64 y (*.f64 z -1/2))) (*.f64 x (*.f64 y (*.f64 z -1/2))))
(-.f64 (*.f64 x (*.f64 y (neg.f64 z))) 0)
(/.f64 (*.f64 x (*.f64 y (neg.f64 z))) 1)
(/.f64 (*.f64 z (*.f64 x (*.f64 y -2))) 2)
(/.f64 (*.f64 (*.f64 x y) (*.f64 z -4)) 4)
(/.f64 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8)) (*.f64 2 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8))) 32)
(neg.f64 (*.f64 x (*.f64 y z)))
Outputs
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 x (*.f64 y (neg.f64 z))) 0)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 0 (*.f64 x (*.f64 y (neg.f64 z))))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 x (*.f64 y (*.f64 z -1/2))) (*.f64 x (*.f64 y (*.f64 z -1/2))))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(-.f64 (*.f64 x (*.f64 y (neg.f64 z))) 0)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 x (*.f64 y (neg.f64 z))) 1)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 z (*.f64 x (*.f64 y -2))) 2)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 (*.f64 x y) (*.f64 z -4)) 4)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8) 8)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8)) 16)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8)) (*.f64 2 (*.f64 (*.f64 x (*.f64 y (neg.f64 z))) 8))) 32)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(neg.f64 (*.f64 x (*.f64 y z)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.8b
(*.f64 y (neg.f64 (*.f64 z x)))
Compiler

Compiled 19 to 6 computations (68.4% saved)

series70.0ms (0.6%)

Counts
1 → 36
Calls

9 calls:

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

rewrite88.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1794×bool.json-1
1794×bool.json-2
1186×rational.json-simplify-2
1184×bool.json-3
996×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
19217
226017
359517
4136517
5336517
6710417
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 y (neg.f64 (*.f64 z x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (neg.f64 (*.f64 z x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (neg.f64 (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 y (*.f64 z x)) -1/2) (*.f64 (*.f64 y (*.f64 z x)) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (neg.f64 (*.f64 z x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 y (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (neg.f64 (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 z x) (*.f64 y -2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 x (*.f64 z -4))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 z x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8)) (*.f64 2 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 y (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (neg.f64 (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (neg.f64 (*.f64 z x))) (*.f64 y (neg.f64 (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (neg.f64 (*.f64 z x))) (*.f64 y (neg.f64 (*.f64 z x))))))))

simplify274.0ms (2.4%)

Algorithm
egg-herbie
Rules
2536×rational.json-simplify-35
1722×rational.json-simplify-53
1302×rational.json-simplify-1
1296×rational.json-simplify-43
1154×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
046850
1105850
2275850
3819850
43442850
54731850
65496850
75916850
86050850
96284850
106486850
117507850
127740850
Stop Event
node limit
Counts
50 → 17
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (neg.f64 (*.f64 z x))) 0)
(+.f64 0 (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 -1 (-.f64 1 (*.f64 y (*.f64 z x))))
(+.f64 (*.f64 (*.f64 y (*.f64 z x)) -1/2) (*.f64 (*.f64 y (*.f64 z x)) -1/2))
(-.f64 (*.f64 y (neg.f64 (*.f64 z x))) 0)
(-.f64 0 (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 y (neg.f64 (*.f64 z x))) 1)
(/.f64 (*.f64 (*.f64 z x) (*.f64 y -2)) 2)
(/.f64 (*.f64 y (*.f64 x (*.f64 z -4))) 4)
(/.f64 (*.f64 y (*.f64 z x)) -1)
(/.f64 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8)) (*.f64 2 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8))) 32)
(neg.f64 (*.f64 y (*.f64 z x)))
Outputs
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 y (neg.f64 (*.f64 z x))) 0)
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 0 (*.f64 y (neg.f64 (*.f64 z x))))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 -1 (-.f64 1 (*.f64 y (*.f64 z x))))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 (*.f64 y (*.f64 z x)) -1/2) (*.f64 (*.f64 y (*.f64 z x)) -1/2))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(-.f64 (*.f64 y (neg.f64 (*.f64 z x))) 0)
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(-.f64 0 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 y (neg.f64 (*.f64 z x))) 1)
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 (*.f64 z x) (*.f64 y -2)) 2)
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 y (*.f64 x (*.f64 z -4))) 4)
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 y (*.f64 z x)) -1)
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8) 8)
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8)) 16)
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8)) (*.f64 2 (*.f64 (*.f64 y (neg.f64 (*.f64 z x))) 8))) 32)
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 7 computations (74.1% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite93.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1940×bool.json-1
1940×bool.json-2
1190×bool.json-3
1080×rational.json-1
1080×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01023
110223
228023
363623
4147323
5366823
6700423
Stop Event
node limit
Counts
1 → 18
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (+.f64 1 (*.f64 y (neg.f64 z))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (*.f64 y (neg.f64 z))) x)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (*.f64 y (*.f64 x (neg.f64 z))))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))))))))

simplify1.4s (12.7%)

Algorithm
egg-herbie
Rules
1732×rational.json-simplify-35
1672×rational.json-simplify-1
1506×rational.json-simplify-2
1296×rational.json-simplify-42
1182×rational.json-simplify-48
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0591182
11281174
22701174
3595982
41318982
52756982
63568982
73685982
83853982
94170982
104629982
115134982
125806982
135994982
146191982
156348982
166514982
176674982
187677982
Stop Event
node limit
Counts
54 → 31
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 y z) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 y z) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 y z) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 y z) 1) x))
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(-.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 0)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(*.f64 x (*.f64 (+.f64 1 (*.f64 y (neg.f64 z))) 1))
(*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1)
(*.f64 1 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1/2))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 2))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1/2) 2)
(*.f64 (+.f64 1 (*.f64 y (neg.f64 z))) x)
(/.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4) 4)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4)) 8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4))) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4)))) 32)
Outputs
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 y z) 1) x))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 y z) 1) x))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 y z) 1) x))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 (-.f64 (*.f64 y z) 1) x))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 z (*.f64 (neg.f64 y) x))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 (*.f64 y z) (neg.f64 x))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 z (*.f64 (neg.f64 y) x))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 (*.f64 y z) (neg.f64 x))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 z (*.f64 (neg.f64 y) x))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 (*.f64 y z) (neg.f64 x))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 z (*.f64 (neg.f64 y) x))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 (*.f64 y z) (neg.f64 x))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(-.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 0)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 x (*.f64 (+.f64 1 (*.f64 y (neg.f64 z))) 1))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 1 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1/2))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 2) 1/2)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 4 (/.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4) 1/4)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 2))
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1/2) 2)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 y (neg.f64 z))) x)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 1)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 2) 2)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4) 4)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4)) 8)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4))) 16)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (*.f64 x (neg.f64 z)))) 4)))) 32)
(*.f64 x (+.f64 1 (*.f64 y (neg.f64 z))))
(+.f64 x (*.f64 z (*.f64 (neg.f64 y) x)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(-.f64 x (*.f64 y (*.f64 z x)))

eval13.0ms (0.1%)

Compiler

Compiled 804 to 303 computations (62.3% saved)

prune11.0ms (0.1%)

Pruning

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New78280
Fresh011
Picked101
Done033
Total79685
Error
0.0b
Counts
85 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
4.6b
(-.f64 x (*.f64 y (*.f64 z x)))
40.0b
(*.f64 z (*.f64 (neg.f64 y) x))
39.0b
(*.f64 y (neg.f64 (*.f64 z x)))
3.6b
(*.f64 x (-.f64 1 (*.f64 y z)))
39.7b
(*.f64 x (*.f64 y (neg.f64 z)))
26.8b
x
Compiler

Compiled 51 to 34 computations (33.3% saved)

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.6b
(*.f64 z (*.f64 (neg.f64 y) x))
Compiler

Compiled 18 to 6 computations (66.7% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite88.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1820×bool.json-1
1820×bool.json-2
1222×bool.json-3
1192×rational.json-simplify-2
1034×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
19417
227417
362017
4137417
5333517
6717317
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 z (*.f64 (neg.f64 y) x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (*.f64 y (neg.f64 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 z (*.f64 y (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 z (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z (*.f64 x (*.f64 y -1/2))) (*.f64 z (*.f64 x (*.f64 y -1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 z (*.f64 y (neg.f64 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 y (neg.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 z (*.f64 y -2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 z (*.f64 y -4))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 z (*.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8)) (*.f64 2 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 z (*.f64 y (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 z (*.f64 y (neg.f64 x))) (*.f64 z (*.f64 y (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 z (*.f64 y (neg.f64 x))) (*.f64 z (*.f64 y (neg.f64 x))))))))

simplify594.0ms (5.3%)

Algorithm
egg-herbie
Rules
3958×rational.json-simplify-35
2828×rational.json-simplify-2
1058×rational.json-simplify-43
828×rational.json-simplify-1
824×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
052850
1127850
2282850
3668850
42757850
53850850
64458850
74803850
84865850
94981850
106210850
116345850
126467850
136800850
147114850
157412850
167739850
Stop Event
node limit
Counts
50 → 18
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 z (*.f64 y (neg.f64 x))) 0)
(+.f64 0 (*.f64 z (*.f64 y (neg.f64 x))))
(+.f64 -1 (-.f64 1 (*.f64 z (*.f64 y x))))
(+.f64 (*.f64 z (*.f64 x (*.f64 y -1/2))) (*.f64 z (*.f64 x (*.f64 y -1/2))))
(-.f64 (*.f64 z (*.f64 y (neg.f64 x))) 0)
(-.f64 0 (*.f64 z (*.f64 y x)))
(/.f64 (*.f64 z (*.f64 y (neg.f64 x))) 1)
(/.f64 (*.f64 x (*.f64 z (*.f64 y -2))) 2)
(/.f64 (*.f64 x (*.f64 z (*.f64 y -4))) 4)
(/.f64 (*.f64 z (*.f64 y x)) -1)
(/.f64 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8)) (*.f64 2 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8))) 32)
(neg.f64 (*.f64 z (*.f64 y x)))
Outputs
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(+.f64 (*.f64 z (*.f64 y (neg.f64 x))) 0)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(+.f64 0 (*.f64 z (*.f64 y (neg.f64 x))))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(+.f64 -1 (-.f64 1 (*.f64 z (*.f64 y x))))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(+.f64 (*.f64 z (*.f64 x (*.f64 y -1/2))) (*.f64 z (*.f64 x (*.f64 y -1/2))))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(-.f64 (*.f64 z (*.f64 y (neg.f64 x))) 0)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(-.f64 0 (*.f64 z (*.f64 y x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(/.f64 (*.f64 z (*.f64 y (neg.f64 x))) 1)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(/.f64 (*.f64 x (*.f64 z (*.f64 y -2))) 2)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(/.f64 (*.f64 x (*.f64 z (*.f64 y -4))) 4)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(/.f64 (*.f64 z (*.f64 y x)) -1)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(/.f64 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8) 8)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(/.f64 (*.f64 2 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8)) 16)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8)) (*.f64 2 (*.f64 (*.f64 z (*.f64 y (neg.f64 x))) 8))) 32)
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))
(neg.f64 (*.f64 z (*.f64 y x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 x (neg.f64 z)))

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series2.0ms (0%)

Counts
2 → 36
Calls

18 calls:

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

rewrite86.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1400×bool.json-1
1400×bool.json-2
1358×rational.json-1
1358×rational.json-2
1358×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
18132
223532
352632
4109032
5249932
6533432
Stop Event
node limit
Counts
2 → 50
Calls
Call 1
Inputs
(*.f64 y (*.f64 z x))
(-.f64 x (*.f64 y (*.f64 z x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 z x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 z (*.f64 x 1/2))) (*.f64 y (*.f64 z (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (*.f64 z x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 z (+.f64 x x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 z (*.f64 x 4))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 y (*.f64 z x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 y (*.f64 z x)) (*.f64 y (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 y (*.f64 z x)) (*.f64 y (*.f64 z x)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (neg.f64 (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 y (*.f64 z x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 x (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 y (*.f64 z x))) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 x (-.f64 1 (*.f64 y (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x (-.f64 1 (*.f64 y (*.f64 z x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))) (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 1 (+.f64 (-.f64 (*.f64 y (*.f64 z x)) x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 1 (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (*.f64 y (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 x (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (-.f64 (*.f64 x 1/2) (*.f64 y (*.f64 z (*.f64 x 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (-.f64 1 (*.f64 y z)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 y (*.f64 z x)) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 x) (+.f64 (*.f64 y z) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 y z) -1) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 y (*.f64 z x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (-.f64 1 (*.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (-.f64 (+.f64 x x) (*.f64 y (*.f64 z (+.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (-.f64 2 (*.f64 y (+.f64 z z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (*.f64 y z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (*.f64 y (*.f64 z x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (-.f64 1 (*.f64 y z)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 y (*.f64 z x)) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) -1))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y (*.f64 z x)) x) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) -1)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (neg.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) -1))))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y (*.f64 z x)) x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 y (*.f64 z x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 x (*.f64 y (*.f64 z x)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 x (*.f64 y (*.f64 z x))) (-.f64 x (*.f64 y (*.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 x (*.f64 y (*.f64 z x))) (-.f64 x (*.f64 y (*.f64 z x))))))))

simplify359.0ms (3.2%)

Algorithm
egg-herbie
Rules
1978×rational.json-simplify-35
1128×rational.json-simplify-48
1078×rational.json-simplify-42
1072×rational.json-simplify-2
888×rational.json-simplify-41
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
01171648
12751648
26081648
317501648
436571642
552311642
661601642
764951642
874491642
Stop Event
node limit
Counts
86 → 65
Calls
Call 1
Inputs
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(*.f64 -1 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 (*.f64 y (*.f64 z x)) 0)
(+.f64 0 (*.f64 y (*.f64 z x)))
(+.f64 (*.f64 y (*.f64 z (*.f64 x 1/2))) (*.f64 y (*.f64 z (*.f64 x 1/2))))
(-.f64 (*.f64 y (*.f64 z x)) 0)
(/.f64 (*.f64 y (*.f64 z x)) 1)
(/.f64 (*.f64 y (*.f64 z (+.f64 x x))) 2)
(/.f64 (*.f64 y (*.f64 z (*.f64 x 4))) 4)
(/.f64 (*.f64 (*.f64 y (*.f64 z x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8))) 32)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 (-.f64 x (*.f64 y (*.f64 z x))) 0)
(+.f64 0 (-.f64 x (*.f64 y (*.f64 z x))))
(+.f64 (neg.f64 (*.f64 y (*.f64 z x))) x)
(+.f64 -1 (+.f64 x (-.f64 1 (*.f64 y (*.f64 z x)))))
(+.f64 (+.f64 x (-.f64 1 (*.f64 y (*.f64 z x)))) -1)
(+.f64 (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))) (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))))
(+.f64 -2 (-.f64 1 (+.f64 (-.f64 (*.f64 y (*.f64 z x)) x) -1)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 1)
(*.f64 1 (-.f64 x (*.f64 y (*.f64 z x))))
(*.f64 2 (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))))
(*.f64 2 (-.f64 (*.f64 x 1/2) (*.f64 y (*.f64 z (*.f64 x 1/2)))))
(*.f64 (*.f64 x (*.f64 2 (-.f64 1 (*.f64 y z)))) 1/2)
(*.f64 (-.f64 (*.f64 y (*.f64 z x)) x) -1)
(*.f64 4 (/.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4))
(*.f64 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4) 1/4)
(*.f64 (neg.f64 x) (+.f64 (*.f64 y z) -1))
(*.f64 (+.f64 (*.f64 y z) -1) (neg.f64 x))
(*.f64 -1 (-.f64 (*.f64 y (*.f64 z x)) x))
(*.f64 1/2 (*.f64 x (*.f64 2 (-.f64 1 (*.f64 y z)))))
(*.f64 1/2 (-.f64 (+.f64 x x) (*.f64 y (*.f64 z (+.f64 x x)))))
(*.f64 (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))) 2)
(*.f64 (*.f64 x 1/2) (-.f64 2 (*.f64 y (+.f64 z z))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(*.f64 1/4 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4))
(*.f64 (/.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4) 4)
(/.f64 (-.f64 x (*.f64 y (*.f64 z x))) 1)
(/.f64 (*.f64 x (*.f64 2 (-.f64 1 (*.f64 y z)))) 2)
(/.f64 (-.f64 (*.f64 y (*.f64 z x)) x) -1)
(/.f64 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4) 4)
(/.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) -1))) -2)
(/.f64 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 8)) 16)
(/.f64 (*.f64 (-.f64 (*.f64 y (*.f64 z x)) x) 4) -4)
(/.f64 (neg.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) -1)))) 2)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 8))) 32)
(/.f64 (*.f64 2 (neg.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) -1))))) 4)
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y (*.f64 z x)) x) 4)) 4)
(neg.f64 (-.f64 (*.f64 y (*.f64 z x)) x))
Outputs
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 1 (*.f64 -1 (*.f64 y z))) x)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
x
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(*.f64 -1 (*.f64 y (*.f64 z x)))
(neg.f64 (*.f64 y (*.f64 z x)))
(*.f64 y (neg.f64 (*.f64 z x)))
(*.f64 y (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 -1 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 y (*.f64 z x)) 0)
(*.f64 y (*.f64 z x))
(+.f64 0 (*.f64 y (*.f64 z x)))
(*.f64 y (*.f64 z x))
(+.f64 (*.f64 y (*.f64 z (*.f64 x 1/2))) (*.f64 y (*.f64 z (*.f64 x 1/2))))
(*.f64 y (*.f64 z x))
(-.f64 (*.f64 y (*.f64 z x)) 0)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 y (*.f64 z x)) 1)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 y (*.f64 z (+.f64 x x))) 2)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 y (*.f64 z (*.f64 x 4))) 4)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 (*.f64 y (*.f64 z x)) 8) 8)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8)) 16)
(*.f64 y (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (*.f64 z x)) 8))) 32)
(*.f64 y (*.f64 z x))
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (-.f64 x (*.f64 y (*.f64 z x))) 0)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 0 (-.f64 x (*.f64 y (*.f64 z x))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 (neg.f64 (*.f64 y (*.f64 z x))) x)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 -1 (+.f64 x (-.f64 1 (*.f64 y (*.f64 z x)))))
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (+.f64 x (-.f64 1 (*.f64 y (*.f64 z x)))) -1)
(+.f64 x (neg.f64 (*.f64 y (*.f64 z x))))
(+.f64 x (*.f64 y (neg.f64 (*.f64 z x))))
(+.f64 x (*.f64 y (*.f64 z (neg.f64 x))))
(+.f64 (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))) (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(+.f64 -2 (-.f64 1 (+.f64 (-.f64 (*.f64 y (*.f64 z x)) x) -1)))
(+.f64 -2 (-.f64 1 (+.f64 -1 (-.f64 (*.f64 y (*.f64 z x)) x))))
(+.f64 -2 (-.f64 1 (+.f64 -1 (*.f64 x (+.f64 (*.f64 y z) -1)))))
(+.f64 -2 (-.f64 x (+.f64 (*.f64 y (*.f64 z x)) -2)))
(*.f64 x (-.f64 1 (*.f64 y z)))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 1)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 1 (-.f64 x (*.f64 y (*.f64 z x))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 2 (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 2 (-.f64 (*.f64 x 1/2) (*.f64 y (*.f64 z (*.f64 x 1/2)))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (*.f64 x (*.f64 2 (-.f64 1 (*.f64 y z)))) 1/2)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (-.f64 (*.f64 y (*.f64 z x)) x) -1)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 4 (/.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4) 1/4)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (neg.f64 x) (+.f64 (*.f64 y z) -1))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (+.f64 (*.f64 y z) -1) (neg.f64 x))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 -1 (-.f64 (*.f64 y (*.f64 z x)) x))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 1/2 (*.f64 x (*.f64 2 (-.f64 1 (*.f64 y z)))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 1/2 (-.f64 (+.f64 x x) (*.f64 y (*.f64 z (+.f64 x x)))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (*.f64 (*.f64 x 1/2) (-.f64 1 (*.f64 y z))) 2)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (*.f64 x 1/2) (-.f64 2 (*.f64 y (+.f64 z z))))
(*.f64 x (*.f64 1/2 (-.f64 2 (*.f64 y (+.f64 z z)))))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 1/4 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(*.f64 (/.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4) 4)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (-.f64 x (*.f64 y (*.f64 z x))) 1)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 x (*.f64 2 (-.f64 1 (*.f64 y z)))) 2)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (-.f64 (*.f64 y (*.f64 z x)) x) -1)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 4) 4)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) -1))) -2)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 8) 8)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 8)) 16)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 (-.f64 (*.f64 y (*.f64 z x)) x) 4) -4)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (neg.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) -1)))) 2)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 y (*.f64 z x))) 8))) 32)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (*.f64 2 (neg.f64 (*.f64 x (*.f64 2 (+.f64 (*.f64 y z) -1))))) 4)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 y (*.f64 z x)) x) 4)) 4)
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))
(neg.f64 (-.f64 (*.f64 y (*.f64 z x)) x))
(*.f64 (-.f64 1 (*.f64 y z)) x)
(-.f64 x (*.f64 y (*.f64 z x)))

eval14.0ms (0.1%)

Compiler

Compiled 829 to 359 computations (56.7% saved)

prune13.0ms (0.1%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New83083
Fresh011
Picked011
Done044
Total83689
Error
0.0b
Counts
89 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
4.6b
(-.f64 x (*.f64 y (*.f64 z x)))
40.0b
(*.f64 z (*.f64 (neg.f64 y) x))
39.0b
(*.f64 y (neg.f64 (*.f64 z x)))
3.6b
(*.f64 x (-.f64 1 (*.f64 y z)))
39.7b
(*.f64 x (*.f64 y (neg.f64 z)))
26.8b
x
Compiler

Compiled 51 to 34 computations (33.3% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0%)

Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done055
Total066
Error
0.0b
Counts
6 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
4.6b
(-.f64 x (*.f64 y (*.f64 z x)))
40.0b
(*.f64 z (*.f64 (neg.f64 y) x))
39.0b
(*.f64 y (neg.f64 (*.f64 z x)))
3.6b
(*.f64 x (-.f64 1 (*.f64 y z)))
39.7b
(*.f64 x (*.f64 y (neg.f64 z)))
26.8b
x
Compiler

Compiled 51 to 34 computations (33.3% saved)

regimes950.0ms (8.5%)

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

6 calls:

813.0ms
(*.f64 x (-.f64 1 (*.f64 y z)))
86.0ms
(*.f64 y z)
16.0ms
x
15.0ms
z
9.0ms
y
Results
ErrorSegmentsBranch
0.9b3x
1.7b2y
2.4b2z
0.1b3(*.f64 x (-.f64 1 (*.f64 y z)))
0.1b3(-.f64 1 (*.f64 y z))
0.1b3(*.f64 y z)
Compiler

Compiled 80 to 45 computations (43.8% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
2.8317649022240424e+304
1.0559343214197758e+308
0.0ms
-5.758812335422873e+294
-1.0775990079406513e+292
Compiler

Compiled 16 to 12 computations (25% saved)

regimes955.0ms (8.5%)

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

3 calls:

831.0ms
y
88.0ms
z
35.0ms
x
Results
ErrorSegmentsBranch
20.4b9x
15.6b5y
13.5b5z
Compiler

Compiled 34 to 21 computations (38.2% saved)

bsearch128.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
79.0ms
3.913051486962663e+273
5.4031690933030915e+274
18.0ms
6.681531266180446e+246
6.981025974654711e+250
13.0ms
4.0546711615523975e+56
3.5040401701783314e+58
18.0ms
-2.9863735219862083e-88
-2.0362230373463237e-104
Results
76.0ms126×body256infinite
45.0ms496×body256valid
Compiler

Compiled 551 to 395 computations (28.3% saved)

regimes834.0ms (7.4%)

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

3 calls:

787.0ms
z
30.0ms
x
16.0ms
y
Results
ErrorSegmentsBranch
20.4b9x
15.7b5y
15.3b3z
Compiler

Compiled 28 to 18 computations (35.7% saved)

bsearch70.0ms (0.6%)

Algorithm
binary-search
Steps
TimeLeftRight
55.0ms
4.0546711615523975e+56
3.5040401701783314e+58
15.0ms
-1.1408610199715662e-41
-2.149839811888396e-49
Results
66.0ms256×body256valid
1.0ms16×body256infinite
Compiler

Compiled 256 to 188 computations (26.6% saved)

regimes124.0ms (1.1%)

Accuracy

Total -44.6b remaining (-269.9%)

Threshold costs -44.6b (-269.9%)

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

3 calls:

101.0ms
x
12.0ms
y
10.0ms
z
Results
ErrorSegmentsBranch
21.6b9x
18.5b5y
16.5b3z
Compiler

Compiled 22 to 15 computations (31.8% saved)

bsearch26.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
12.0ms
4.0546711615523975e+56
3.5040401701783314e+58
14.0ms
-9.232300801243915e-105
-1.8625256461696161e-109
Results
22.0ms240×body256valid
1.0ms12×body256infinite
Compiler

Compiled 241 to 177 computations (26.6% saved)

simplify5.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
052295
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(if (<=.f64 (*.f64 y z) -4999999999999999906743388603115020788907780359910290665049241860223423941639750419942148863391427290368681348502011290786385146843522467955007764480084024749443603611970102342099448132228169829243943975742290002451379260550207232245491981306595417943121645130212363962285255265070690291922501632) (*.f64 z (*.f64 (neg.f64 y) x)) (if (<=.f64 (*.f64 y z) 49999999999999996962677625276823109300201436100586624765953857856616022815066169514216546287202538742184280590280810862893585968713180152651178994204334413874936507208410055205338551265812204529218599012742757995383198412754109163297745561348039749026730174593312862032038021904229799310374521740690718720) (*.f64 x (-.f64 1 (*.f64 y z))) (*.f64 z (*.f64 (neg.f64 y) x))))
(if (<=.f64 z -2598103900926253/8958978968711216842229769122273777112486581988938598139599956403855167484720643781523509973086428463104) (*.f64 z (*.f64 (neg.f64 y) x)) (if (<=.f64 z 1349999999999999917177148272005020428402703887646668619776) x (if (<=.f64 z 67999999999999994634584649658599780713674908317515112135492320337685205793147484818907224163596408179950475751603367803270752542858880943933112552718749583040769023236096181446464019227622510295755762679305665488588518181771932610643103357520303882240) (*.f64 z (*.f64 (neg.f64 y) x)) (if (<=.f64 z 3999999999999999781609366786370699538315906167821770636530441439302874776971656477259368651282701118596156829198285235335387636764554739890031957129346783130430668160903673100202736261044670067912709419161062420261864265477507401405172243694156185754678721627618859815010304) (*.f64 x (*.f64 y (neg.f64 z))) (*.f64 z (*.f64 (neg.f64 y) x))))))
(if (<=.f64 z -6904811908925349/12554203470773361527671578846415332832204710888928069025792) (*.f64 y (neg.f64 (*.f64 z x))) (if (<=.f64 z 1300000000000000010583328191163608786812573598138071252992) x (*.f64 x (*.f64 y (neg.f64 z)))))
(if (<=.f64 z -726257778211943/80695308690215893426747474125094121072803306025913234775958104891895238188026287332176417290004307232371974124148359168) (*.f64 x (*.f64 y (neg.f64 z))) (if (<=.f64 z 5200000000000000042333312764654435147250294392552285011968) x (*.f64 x (*.f64 y (neg.f64 z)))))
x
Outputs
(if (<=.f64 (*.f64 y z) -4999999999999999906743388603115020788907780359910290665049241860223423941639750419942148863391427290368681348502011290786385146843522467955007764480084024749443603611970102342099448132228169829243943975742290002451379260550207232245491981306595417943121645130212363962285255265070690291922501632) (*.f64 z (*.f64 (neg.f64 y) x)) (if (<=.f64 (*.f64 y z) 49999999999999996962677625276823109300201436100586624765953857856616022815066169514216546287202538742184280590280810862893585968713180152651178994204334413874936507208410055205338551265812204529218599012742757995383198412754109163297745561348039749026730174593312862032038021904229799310374521740690718720) (*.f64 x (-.f64 1 (*.f64 y z))) (*.f64 z (*.f64 (neg.f64 y) x))))
(if (<=.f64 z -2598103900926253/8958978968711216842229769122273777112486581988938598139599956403855167484720643781523509973086428463104) (*.f64 z (*.f64 (neg.f64 y) x)) (if (<=.f64 z 1349999999999999917177148272005020428402703887646668619776) x (if (<=.f64 z 67999999999999994634584649658599780713674908317515112135492320337685205793147484818907224163596408179950475751603367803270752542858880943933112552718749583040769023236096181446464019227622510295755762679305665488588518181771932610643103357520303882240) (*.f64 z (*.f64 (neg.f64 y) x)) (if (<=.f64 z 3999999999999999781609366786370699538315906167821770636530441439302874776971656477259368651282701118596156829198285235335387636764554739890031957129346783130430668160903673100202736261044670067912709419161062420261864265477507401405172243694156185754678721627618859815010304) (*.f64 x (*.f64 y (neg.f64 z))) (*.f64 z (*.f64 (neg.f64 y) x))))))
(if (<=.f64 z -6904811908925349/12554203470773361527671578846415332832204710888928069025792) (*.f64 y (neg.f64 (*.f64 z x))) (if (<=.f64 z 1300000000000000010583328191163608786812573598138071252992) x (*.f64 x (*.f64 y (neg.f64 z)))))
(if (<=.f64 z -726257778211943/80695308690215893426747474125094121072803306025913234775958104891895238188026287332176417290004307232371974124148359168) (*.f64 x (*.f64 y (neg.f64 z))) (if (<=.f64 z 5200000000000000042333312764654435147250294392552285011968) x (*.f64 x (*.f64 y (neg.f64 z)))))
x
Compiler

Compiled 130 to 67 computations (48.5% saved)

soundness1.3s (11.4%)

Algorithm
egg-herbie
Rules
2082×rational.json-simplify-53
1994×rational.json-simplify-35
1848×rational.json-simplify-2
1732×rational.json-simplify-35
1672×rational.json-simplify-1
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01062026
12431868
26221656
313251656
430641656
536441656
639201656
741211656
845391656
954321656
1075121656
0591182
11281174
22701174
3595982
41318982
52756982
63568982
73685982
83853982
94170982
104629982
115134982
125806982
135994982
146191982
156348982
166514982
176674982
187677982
Stop Event
node limit
node limit
Compiler

Compiled 89 to 46 computations (48.3% saved)

end57.0ms (0.5%)

Compiler

Compiled 186 to 78 computations (58.1% saved)

Profiling

Loading profile data...