Details

Time bar (total: 19.1s)

analyze1.7s (9.1%)

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.6%25%72.5%0.1%2.3%0%0%9
36.7%34.3%59.3%0.1%6.2%0%0%10
44.2%40.6%51.3%0.1%8%0%0%11
52.1%46.8%43%0.1%10%0%0%12
Compiler

Compiled 11 to 7 computations (36.4% saved)

sample4.3s (22.3%)

Results
3.4s8256×body256valid
808.0ms1136×body256infinite
Bogosity

preprocess9.0ms (0%)

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

Useful iterations: 0 (0.0ms)

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

Compiled 13 to 9 computations (30.8% saved)

simplify9.0ms (0%)

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

Useful iterations: 0 (0.0ms)

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

eval0.0ms (0%)

Compiler

Compiled 10 to 6 computations (40% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 10 to 6 computations (40% saved)

localize6.0ms (0%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series4.0ms (0%)

Counts
2 → 60
Calls

18 calls:

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

rewrite84.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1440×rational.json-simplify-35
1334×bool.json-1
1334×bool.json-2
1292×rational.json-1
1292×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
17932
221732
347032
499132
5222932
6482632
Stop Event
node limit
Counts
2 → 33
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 (-.f64 x z) -2)) (*.f64 y (/.f64 (-.f64 x z) -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 (-.f64 x z) -2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z x) (*.f64 y 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 /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 z x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 z x)) 8)))) 64)))) (#(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 (+.f64 x (*.f64 y (-.f64 z x))) 0)))) (#(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 (*.f64 y (-.f64 z x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 y (/.f64 (-.f64 x z) -2)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (/.f64 (-.f64 x z) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 2) 1/2)))) (#(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 1/2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (*.f64 (-.f64 x z) -2)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (-.f64 x z) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 1/2) 2)))) (#(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 (+.f64 x (*.f64 y (-.f64 z x))) 2) 2)))) (#(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 (+.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 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8)))) 64)))) (#(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))))))))

simplify361.0ms (1.9%)

Algorithm
egg-herbie
Rules
4016×rational.json-simplify-51
3406×rational.json-simplify-41
2448×rational.json-simplify-35
1266×rational.json-simplify-2
534×rational.json-simplify-1
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0941971
12011707
24851707
311231663
420981663
526701663
629811663
731641663
833081663
934361663
1035631663
1136871663
1239021663
1339231663
1439521663
1539681663
1639971663
1740121663
1841471663
1942791663
Stop Event
node limit
Counts
93 → 63
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 y 1) x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 y 1) x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 y 1) x)))
x
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 (*.f64 y (-.f64 z x)) x)
(*.f64 y (-.f64 z x))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 (*.f64 y (-.f64 z x)) x)
(*.f64 y (-.f64 z x))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 y (-.f64 z x)) 0)
(+.f64 0 (*.f64 y (-.f64 z x)))
(+.f64 (*.f64 y (/.f64 (-.f64 x z) -2)) (*.f64 y (/.f64 (-.f64 x z) -2)))
(-.f64 (*.f64 y (-.f64 z x)) 0)
(/.f64 (*.f64 y (-.f64 z x)) 1)
(/.f64 (*.f64 y (*.f64 (-.f64 x z) -2)) 2)
(/.f64 (*.f64 (-.f64 z x) (*.f64 y 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 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 z x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 z x)) 8)))) 64)
(-.f64 (+.f64 x (*.f64 y (-.f64 z x))) 0)
(*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 1)
(*.f64 1 (+.f64 x (*.f64 y (-.f64 z x))))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 1/2))
(*.f64 2 (+.f64 (*.f64 y (/.f64 (-.f64 x z) -2)) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (/.f64 (-.f64 x z) -2))))
(*.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 x (*.f64 y (-.f64 z x))) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 2))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 (-.f64 x z) -2)) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (-.f64 x z) -2))))
(*.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 1/2) 2)
(*.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 (+.f64 x (*.f64 y (-.f64 z x))) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 4) 4)
(/.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 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8)))) 64)
Outputs
(*.f64 -1 (*.f64 y x))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z))
(*.f64 y (+.f64 z (neg.f64 x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (*.f64 -1 y))))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (neg.f64 y))))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (*.f64 -1 y))))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (neg.f64 y))))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (*.f64 -1 y))))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (neg.f64 y))))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 x (+.f64 1 (*.f64 -1 y)))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (*.f64 -1 y))))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (neg.f64 y))))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (*.f64 -1 y))))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (neg.f64 y))))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 1 (*.f64 -1 y)) x))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (*.f64 -1 y))))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (neg.f64 y))))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 x (+.f64 1 (*.f64 -1 y)))
(*.f64 x (+.f64 1 (neg.f64 y)))
(*.f64 x (-.f64 1 y))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 y 1) x)))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (*.f64 -1 y))))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (neg.f64 y))))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 y 1) x)))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (*.f64 -1 y))))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (neg.f64 y))))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 y 1) x)))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (*.f64 -1 y))))
(+.f64 (*.f64 y z) (*.f64 x (+.f64 1 (neg.f64 y))))
(+.f64 (*.f64 y z) (*.f64 x (-.f64 1 y)))
x
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 x (*.f64 y (-.f64 z x)))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 x (*.f64 y (-.f64 z x)))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 y (-.f64 z x))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 x (*.f64 y (-.f64 z x)))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 x (*.f64 y (-.f64 z x)))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 y (-.f64 z x))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 x (*.f64 y (-.f64 z x)))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 x (*.f64 y (-.f64 z x)))
(+.f64 (*.f64 y (-.f64 z x)) x)
(+.f64 x (*.f64 y (-.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 x (neg.f64 y)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 x (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z)))
(+.f64 x (*.f64 y (+.f64 z (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 x (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z)))
(+.f64 x (*.f64 y (+.f64 z (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 x (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z)))
(+.f64 x (*.f64 y (+.f64 z (neg.f64 x))))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 x (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z)))
(+.f64 x (*.f64 y (+.f64 z (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 x (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z)))
(+.f64 x (*.f64 y (+.f64 z (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 x (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z)))
(+.f64 x (*.f64 y (+.f64 z (neg.f64 x))))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 x (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z)))
(+.f64 x (*.f64 y (+.f64 z (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 x (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z)))
(+.f64 x (*.f64 y (+.f64 z (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 x (*.f64 -1 (*.f64 y x))))
(+.f64 x (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 y z)))
(+.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 (-.f64 x z) -2)) (*.f64 y (/.f64 (-.f64 x z) -2)))
(*.f64 (/.f64 (-.f64 x z) -2) (+.f64 y y))
(*.f64 y (*.f64 (/.f64 (-.f64 x z) -2) 2))
(-.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 (-.f64 x z) -2)) 2)
(*.f64 y (-.f64 z x))
(/.f64 (*.f64 (-.f64 z x) (*.f64 y 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 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 z x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 y (-.f64 z x)) 8)))) 64)
(*.f64 y (-.f64 z x))
(-.f64 (+.f64 x (*.f64 y (-.f64 z x))) 0)
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 1)
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 1 (+.f64 x (*.f64 y (-.f64 z x))))
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 1/2))
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 2 (+.f64 (*.f64 y (/.f64 (-.f64 x z) -2)) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (/.f64 (-.f64 x z) -2))))
(*.f64 2 (+.f64 (*.f64 y (/.f64 (-.f64 x z) -2)) (*.f64 x 1/2)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 2) 1/2)
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 4 (/.f64 (+.f64 x (*.f64 y (-.f64 z x))) 4))
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 4) 1/4)
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 2))
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 1/2 (+.f64 (*.f64 y (*.f64 (-.f64 x z) -2)) (+.f64 x x)))
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 y (*.f64 (-.f64 x z) -2))))
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 1/2) 2)
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 4))
(+.f64 x (*.f64 y (-.f64 z x)))
(*.f64 (/.f64 (+.f64 x (*.f64 y (-.f64 z x))) 4) 4)
(+.f64 x (*.f64 y (-.f64 z x)))
(/.f64 (+.f64 x (*.f64 y (-.f64 z x))) 1)
(+.f64 x (*.f64 y (-.f64 z x)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 2) 2)
(+.f64 x (*.f64 y (-.f64 z x)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 4) 4)
(+.f64 x (*.f64 y (-.f64 z x)))
(/.f64 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8) 8)
(+.f64 x (*.f64 y (-.f64 z x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8)) 16)
(+.f64 x (*.f64 y (-.f64 z x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8))) 32)
(+.f64 x (*.f64 y (-.f64 z x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y (-.f64 z x))) 8)))) 64)
(+.f64 x (*.f64 y (-.f64 z x)))

eval9.0ms (0%)

Compiler

Compiled 646 to 282 computations (56.3% saved)

prune9.0ms (0%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New58563
Fresh000
Picked011
Done000
Total58664
Error
0.0b
Counts
64 → 6
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 x (*.f64 y (-.f64 z x)))
21.6b
(+.f64 x (*.f64 y (neg.f64 x)))
11.5b
(+.f64 x (*.f64 y z))
29.9b
(*.f64 y (-.f64 z x))
21.6b
(*.f64 x (-.f64 1 y))
32.9b
x
Compiler

Compiled 47 to 31 computations (34% saved)

localize6.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite104.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
1212×bool.json-1
1212×bool.json-2
1192×rational.json-simplify-35
1166×rational.json-1
1166×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17713
223713
347413
492113
5198013
6431013
7750713
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 x (-.f64 1 y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 1 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (-.f64 1 y) 1/2)) (*.f64 x (*.f64 (-.f64 1 y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 1 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -2 (*.f64 (+.f64 y -1) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (-.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (-.f64 1 y)) (*.f64 x (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (-.f64 1 y)) (*.f64 x (-.f64 1 y)))))))

simplify1.1s (5.8%)

Algorithm
egg-herbie
Rules
5576×rational.json-simplify-35
2300×rational.json-simplify-2
1094×rational.json-simplify-53
708×rational.json-simplify-1
682×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
044497
1101475
2212475
3452475
41724475
53303475
64252475
74657475
84859475
95066475
105079475
115452475
125456475
135526475
145604475
155815475
166047475
176252475
186447475
196642475
206837475
217032475
227032475
237088475
247091475
257095475
267095475
277291475
287487475
297683475
307879475
Stop Event
node limit
Counts
35 → 20
Calls
Call 1
Inputs
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 -1 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 x (-.f64 1 y)) 0)
(+.f64 0 (*.f64 x (-.f64 1 y)))
(+.f64 (*.f64 x (*.f64 (-.f64 1 y) 1/2)) (*.f64 x (*.f64 (-.f64 1 y) 1/2)))
(-.f64 (*.f64 x (-.f64 1 y)) 0)
(/.f64 (*.f64 x (-.f64 1 y)) 1)
(/.f64 (*.f64 -2 (*.f64 (+.f64 y -1) x)) 2)
(/.f64 (*.f64 (-.f64 1 y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)))) 64)
Outputs
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 y x)))
(+.f64 x (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 x (-.f64 1 y)) 0)
(*.f64 (-.f64 1 y) x)
(+.f64 0 (*.f64 x (-.f64 1 y)))
(*.f64 (-.f64 1 y) x)
(+.f64 (*.f64 x (*.f64 (-.f64 1 y) 1/2)) (*.f64 x (*.f64 (-.f64 1 y) 1/2)))
(*.f64 (-.f64 1 y) x)
(-.f64 (*.f64 x (-.f64 1 y)) 0)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 -2 (*.f64 (+.f64 y -1) x)) 2)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 (-.f64 1 y) (*.f64 x 4)) 4)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 8) 8)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) 16)
(*.f64 (-.f64 1 y) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) 32)
(*.f64 (-.f64 1 y) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)))) 64)
(*.f64 (-.f64 1 y) x)

localize6.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite91.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
1618×bool.json-1
1618×bool.json-2
1586×rational.json-1
1586×rational.json-2
1586×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
17013
219613
341713
486113
5188513
6389913
7638113
Stop Event
node limit
Counts
1 → 20
Calls
Call 1
Inputs
(+.f64 x (*.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 z 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 x (*.f64 y z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (+.f64 z z)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 y z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 y z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 x (*.f64 y z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 y z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 x (*.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 x (*.f64 y z)) (+.f64 x (*.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 x (*.f64 y z)) (+.f64 x (*.f64 y z)))))))

simplify992.0ms (5.2%)

Algorithm
egg-herbie
Rules
5914×rational.json-simplify-51
1978×rational.json-simplify-35
1696×rational.json-simplify-2
1278×rational.json-simplify-1
1128×rational.json-simplify-49
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
054650
1111650
2281650
3690650
41105650
52508650
63350650
73408650
83438650
93464650
103490650
113516650
123565650
133591650
143617650
153643650
163669650
173695650
183721650
194550650
204922650
214954650
224984650
235013650
245042650
255071650
265100650
275129650
285158650
295187650
305216650
315245650
325274650
335303650
345332650
355361650
365390650
375419650
385448650
395477650
405477650
Stop Event
node limit
Counts
56 → 23
Calls
Call 1
Inputs
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(-.f64 (+.f64 x (*.f64 y z)) 0)
(*.f64 (+.f64 x (*.f64 y z)) 1)
(*.f64 1 (+.f64 x (*.f64 y z)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 1/2))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 z 1/2))))
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 x (*.f64 y z)) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y z)) 2))
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 z z)) (+.f64 x x)))
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y z)) 4))
(*.f64 (/.f64 (+.f64 x (*.f64 y z)) 4) 4)
(/.f64 (+.f64 x (*.f64 y z)) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)))) 64)
Outputs
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(-.f64 (+.f64 x (*.f64 y z)) 0)
(+.f64 (*.f64 y z) x)
(*.f64 (+.f64 x (*.f64 y z)) 1)
(+.f64 (*.f64 y z) x)
(*.f64 1 (+.f64 x (*.f64 y z)))
(+.f64 (*.f64 y z) x)
(*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 1/2))
(+.f64 (*.f64 y z) x)
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 y (*.f64 z 1/2))))
(+.f64 (*.f64 y z) x)
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 1/2)
(+.f64 (*.f64 y z) x)
(*.f64 4 (/.f64 (+.f64 x (*.f64 y z)) 4))
(+.f64 (*.f64 y z) x)
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 1/4)
(+.f64 (*.f64 y z) x)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 y z)) 2))
(+.f64 (*.f64 y z) x)
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 z z)) (+.f64 x x)))
(+.f64 (*.f64 y z) x)
(*.f64 (*.f64 (+.f64 x (*.f64 y z)) 1/2) 2)
(+.f64 (*.f64 y z) x)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 y z)) 4))
(+.f64 (*.f64 y z) x)
(*.f64 (/.f64 (+.f64 x (*.f64 y z)) 4) 4)
(+.f64 (*.f64 y z) x)
(/.f64 (+.f64 x (*.f64 y z)) 1)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 2) 2)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 4) 4)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 (+.f64 x (*.f64 y z)) 8) 8)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)) 16)
(+.f64 (*.f64 y z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))) 32)
(+.f64 (*.f64 y z) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 y z)) 8)))) 64)
(+.f64 (*.f64 y z) x)

localize6.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 17 to 6 computations (64.7% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite80.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1548×bool.json-1
1548×bool.json-2
1494×rational.json-1
1494×rational.json-2
1494×rational.json-4
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
0817
18317
223717
352117
4115017
5267413
6572313
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (neg.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 1 y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 1 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (-.f64 1 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x (/.f64 y -2)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 x (/.f64 y -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (-.f64 1 y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (neg.f64 y) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/2 (/.f64 y -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (-.f64 1 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (-.f64 1 y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (*.f64 x (-.f64 1 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x (*.f64 y -2)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (-.f64 1 y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 (*.f64 y -2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x (-.f64 1 y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (-.f64 1 y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (-.f64 1 y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (-.f64 1 y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (-.f64 1 y)) (*.f64 x (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (-.f64 1 y)) (*.f64 x (-.f64 1 y)))))))

simplify251.0ms (1.3%)

Algorithm
egg-herbie
Rules
2098×rational.json-simplify-2
1902×rational.json-simplify-35
1498×rational.json-simplify-1
850×rational.json-simplify-48
790×rational.json-simplify-45
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
085969
1176759
2430759
31286759
42368759
53383759
63902759
74140759
84376759
94704759
105159759
115982759
126813759
137425759
Stop Event
node limit
Counts
55 → 44
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 -1 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(-.f64 (*.f64 x (-.f64 1 y)) 0)
(*.f64 x (-.f64 1 y))
(*.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 1 (*.f64 x (-.f64 1 y)))
(*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 1/2))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y -2)) (*.f64 x 1/2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 x (/.f64 y -2))))
(*.f64 (*.f64 (*.f64 x (-.f64 1 y)) 2) 1/2)
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (neg.f64 y) 1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (/.f64 y -2)))
(*.f64 4 (/.f64 (*.f64 x (-.f64 1 y)) 4))
(*.f64 (*.f64 (*.f64 x (-.f64 1 y)) 4) 1/4)
(*.f64 (-.f64 1 y) x)
(*.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 (*.f64 x (-.f64 1 y)) 2))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 y -2)) (+.f64 x x)))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y -2))))
(*.f64 (*.f64 (*.f64 x (-.f64 1 y)) 1/2) 2)
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 y -2) 2))
(*.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 (*.f64 x (-.f64 1 y)) 4))
(*.f64 (/.f64 (*.f64 x (-.f64 1 y)) 4) 4)
(/.f64 (*.f64 x (-.f64 1 y)) 1)
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 2) 2)
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 4) 4)
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) 32)
Outputs
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 (-.f64 y 1) x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(-.f64 (*.f64 x (-.f64 1 y)) 0)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 x (-.f64 1 y))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1 (*.f64 x (-.f64 1 y)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 1/2))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y -2)) (*.f64 x 1/2)))
(*.f64 2 (*.f64 x (+.f64 1/2 (/.f64 y -2))))
(*.f64 x (*.f64 (+.f64 1/2 (/.f64 y -2)) 2))
(*.f64 x (*.f64 2 (+.f64 1/2 (/.f64 y -2))))
(*.f64 (+.f64 x x) (+.f64 1/2 (/.f64 y -2)))
(*.f64 2 (+.f64 (*.f64 x 1/2) (*.f64 x (/.f64 y -2))))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y -2)) (*.f64 x 1/2)))
(*.f64 2 (*.f64 x (+.f64 1/2 (/.f64 y -2))))
(*.f64 x (*.f64 (+.f64 1/2 (/.f64 y -2)) 2))
(*.f64 x (*.f64 2 (+.f64 1/2 (/.f64 y -2))))
(*.f64 (+.f64 x x) (+.f64 1/2 (/.f64 y -2)))
(*.f64 (*.f64 (*.f64 x (-.f64 1 y)) 2) 1/2)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 (neg.f64 y) 1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (*.f64 y -1/2)))
(*.f64 (+.f64 x x) (+.f64 1/2 (/.f64 y -2)))
(*.f64 2 (+.f64 (*.f64 x (/.f64 y -2)) (*.f64 x 1/2)))
(*.f64 2 (*.f64 x (+.f64 1/2 (/.f64 y -2))))
(*.f64 x (*.f64 (+.f64 1/2 (/.f64 y -2)) 2))
(*.f64 x (*.f64 2 (+.f64 1/2 (/.f64 y -2))))
(*.f64 4 (/.f64 (*.f64 x (-.f64 1 y)) 4))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (*.f64 x (-.f64 1 y)) 4) 1/4)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1/2 (*.f64 (*.f64 x (-.f64 1 y)) 2))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1/2 (+.f64 (*.f64 x (*.f64 y -2)) (+.f64 x x)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1/2 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y -2))))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (*.f64 x (-.f64 1 y)) 1/2) 2)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/2) (+.f64 (*.f64 y -2) 2))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 1/4 (*.f64 (*.f64 x (-.f64 1 y)) 4))
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(*.f64 (/.f64 (*.f64 x (-.f64 1 y)) 4) 4)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 x (-.f64 1 y)) 1)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 2) 2)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 4) 4)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (*.f64 x (-.f64 1 y)) 8) 8)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) 16)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8)) (*.f64 2 (*.f64 (*.f64 x (-.f64 1 y)) 8))) 32)
(*.f64 (+.f64 1 (neg.f64 y)) x)
(*.f64 x (-.f64 1 y))
(-.f64 x (*.f64 y x))

eval123.0ms (0.6%)

Compiler

Compiled 917 to 539 computations (41.2% saved)

prune15.0ms (0.1%)

Pruning

8 alts after pruning (4 fresh and 4 done)

PrunedKeptTotal
New1043107
Fresh011
Picked101
Done044
Total1058113
Error
0.0b
Counts
113 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
21.6b
(-.f64 x (*.f64 y x))
0.0b
(+.f64 x (*.f64 y (-.f64 z x)))
11.5b
(+.f64 x (*.f64 y z))
29.9b
(*.f64 y (-.f64 z x))
51.2b
(*.f64 y (neg.f64 x))
40.8b
(*.f64 y z)
21.6b
(*.f64 x (-.f64 1 y))
32.9b
x
Compiler

Compiled 59 to 39 computations (33.9% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize4.0ms (0%)

Compiler

Compiled 11 to 5 computations (54.5% saved)

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

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

Compiled 13 to 5 computations (61.5% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite73.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
1308×bool.json-1
1308×bool.json-2
1266×rational.json-1
1266×rational.json-2
1266×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
16013
217813
339713
484013
5187613
6432013
Stop Event
node limit
Counts
1 → 51
Calls
Call 1
Inputs
(-.f64 x (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (neg.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 x (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (-.f64 x (*.f64 x y)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 (+.f64 x 1) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (+.f64 x 1) (*.f64 x y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (/.f64 (-.f64 1 y) 2)) (*.f64 x (/.f64 (-.f64 1 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 x y)) (+.f64 x -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (+.f64 (-.f64 x (*.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 x 1) (+.f64 (neg.f64 (*.f64 x y)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (-.f64 x (*.f64 x y)) 2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (-.f64 1 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 x (/.f64 (-.f64 1 y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (-.f64 1/2 (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 x (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (/.f64 x 4) (/.f64 (*.f64 x y) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 x (*.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 x) (+.f64 y -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y -1) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x y) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x x) (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (/.f64 (-.f64 1 y) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 x (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (-.f64 (*.f64 x 4) (*.f64 x (*.f64 y 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 y -1))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 x (*.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) x) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) x) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) x) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x y) x) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x y) x))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 x (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 x (*.f64 x y)) (-.f64 x (*.f64 x y)))))))

simplify233.0ms (1.2%)

Algorithm
egg-herbie
Rules
2544×rational.json-simplify-2
2062×rational.json-simplify-35
1074×rational.json-simplify-51
1062×rational.json-simplify-1
776×rational.json-simplify-52
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01221019
12591013
25531007
313721007
425221007
539521007
653101007
762961007
869251007
971681007
1073661007
1175521007
Stop Event
node limit
Counts
75 → 63
Calls
Call 1
Inputs
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (-.f64 1 y) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 -1 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(+.f64 x (neg.f64 (*.f64 x y)))
(+.f64 (-.f64 x (*.f64 x y)) 0)
(+.f64 0 (-.f64 x (*.f64 x y)))
(+.f64 1 (+.f64 (-.f64 x (*.f64 x y)) -1))
(+.f64 (neg.f64 (*.f64 x y)) x)
(+.f64 -1 (-.f64 (+.f64 x 1) (*.f64 x y)))
(+.f64 (-.f64 (+.f64 x 1) (*.f64 x y)) -1)
(+.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) (*.f64 x y)))
(+.f64 (*.f64 x (/.f64 (-.f64 1 y) 2)) (*.f64 x (/.f64 (-.f64 1 y) 2)))
(+.f64 (-.f64 1 (*.f64 x y)) (+.f64 x -1))
(+.f64 -2 (+.f64 (-.f64 x (*.f64 x y)) 2))
(+.f64 (+.f64 x 1) (+.f64 (neg.f64 (*.f64 x y)) -1))
(+.f64 (+.f64 (-.f64 x (*.f64 x y)) 2) -2)
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 x (*.f64 x y)) 1)
(*.f64 1 (-.f64 x (*.f64 x y)))
(*.f64 2 (*.f64 x (/.f64 (-.f64 1 y) 2)))
(*.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 1/2)
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))
(*.f64 (+.f64 x x) (-.f64 1/2 (*.f64 y 1/2)))
(*.f64 (-.f64 (*.f64 x y) x) -1)
(*.f64 4 (/.f64 (-.f64 x (*.f64 x y)) 4))
(*.f64 4 (-.f64 (/.f64 x 4) (/.f64 (*.f64 x y) 4)))
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) 4) 1/4)
(*.f64 (neg.f64 x) (+.f64 y -1))
(*.f64 (+.f64 y -1) (neg.f64 x))
(*.f64 (-.f64 1 y) x)
(*.f64 -1 (-.f64 (*.f64 x y) x))
(*.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 (+.f64 x x) (-.f64 1 y)))
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))
(*.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 y y)))
(*.f64 (*.f64 x (/.f64 (-.f64 1 y) 2)) 2)
(*.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 (-.f64 x (*.f64 x y)) 4))
(*.f64 1/4 (-.f64 (*.f64 x 4) (*.f64 x (*.f64 y 4))))
(*.f64 (/.f64 (-.f64 x (*.f64 x y)) 4) 4)
(/.f64 (-.f64 x (*.f64 x y)) 1)
(/.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 2)
(/.f64 (-.f64 (*.f64 x y) x) -1)
(/.f64 (*.f64 (-.f64 x (*.f64 x y)) 4) 4)
(/.f64 (*.f64 x (*.f64 2 (+.f64 y -1))) -2)
(/.f64 (*.f64 (-.f64 x (*.f64 x y)) 8) 8)
(/.f64 (*.f64 (-.f64 (*.f64 x y) x) 4) -4)
(/.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) x) 4)) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))) 32)
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) x) 4)) 4)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)))) 64)
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) x) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x y) x) 4))) 8)
(neg.f64 (-.f64 (*.f64 x y) x))
Outputs
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 1 (*.f64 -1 y)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
x
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 -1 (*.f64 y x)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 x (neg.f64 (*.f64 x y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (-.f64 x (*.f64 x y)) 0)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 0 (-.f64 x (*.f64 x y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 1 (+.f64 (-.f64 x (*.f64 x y)) -1))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (neg.f64 (*.f64 x y)) x)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 -1 (-.f64 (+.f64 x 1) (*.f64 x y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (-.f64 (+.f64 x 1) (*.f64 x y)) -1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) (*.f64 x y)))
(+.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) (*.f64 y x)))
(+.f64 (*.f64 x 1/2) (*.f64 x (-.f64 1/2 y)))
(*.f64 x (+.f64 1/2 (-.f64 1/2 y)))
(+.f64 (*.f64 x (/.f64 (-.f64 1 y) 2)) (*.f64 x (/.f64 (-.f64 1 y) 2)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (-.f64 1 (*.f64 x y)) (+.f64 x -1))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 -2 (+.f64 (-.f64 x (*.f64 x y)) 2))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (+.f64 x 1) (+.f64 (neg.f64 (*.f64 x y)) -1))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(+.f64 (+.f64 (-.f64 x (*.f64 x y)) 2) -2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 x (-.f64 1 y))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 x (*.f64 x y)) 1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 1 (-.f64 x (*.f64 x y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 2 (*.f64 x (/.f64 (-.f64 1 y) 2)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 1/2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (*.f64 (-.f64 1 y) 1/2))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 x x) (-.f64 1/2 (*.f64 y 1/2)))
(*.f64 (-.f64 (*.f64 x y) x) -1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 4 (/.f64 (-.f64 x (*.f64 x y)) 4))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 4 (-.f64 (/.f64 x 4) (/.f64 (*.f64 x y) 4)))
(*.f64 4 (-.f64 (/.f64 x 4) (*.f64 y (/.f64 x 4))))
(*.f64 (*.f64 (-.f64 x (*.f64 x y)) 4) 1/4)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (neg.f64 x) (+.f64 y -1))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (+.f64 y -1) (neg.f64 x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 -1 (-.f64 (*.f64 x y) x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 1 y)) (*.f64 x 1/2))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 1/2 (*.f64 (+.f64 x x) (-.f64 1 y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/2) (*.f64 2 (-.f64 1 y)))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 x 1/2) (-.f64 2 (+.f64 y y)))
(*.f64 x (*.f64 1/2 (-.f64 2 (+.f64 y y))))
(*.f64 (*.f64 x (/.f64 (-.f64 1 y) 2)) 2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (*.f64 (-.f64 1 y) 1/2) (+.f64 x x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 1/4 (*.f64 (-.f64 x (*.f64 x y)) 4))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 1/4 (-.f64 (*.f64 x 4) (*.f64 x (*.f64 y 4))))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(*.f64 (/.f64 (-.f64 x (*.f64 x y)) 4) 4)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (-.f64 x (*.f64 x y)) 1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (+.f64 x x) (-.f64 1 y)) 2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (-.f64 (*.f64 x y) x) -1)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (-.f64 x (*.f64 x y)) 4) 4)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 x (*.f64 2 (+.f64 y -1))) -2)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (-.f64 x (*.f64 x y)) 8) 8)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 (-.f64 (*.f64 x y) x) 4) -4)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)) 16)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) x) 4)) -8)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))) 32)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) x) 4)) 4)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 x (*.f64 x y)) 8)))) 64)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) x) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x y) x) 4))) 8)
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))
(neg.f64 (-.f64 (*.f64 x y) x))
(*.f64 (-.f64 1 y) x)
(-.f64 x (*.f64 y x))

eval11.0ms (0.1%)

Compiler

Compiled 554 to 298 computations (46.2% saved)

prune10.0ms (0.1%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New63063
Fresh011
Picked011
Done066
Total63871
Error
0.0b
Counts
71 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
21.6b
(-.f64 x (*.f64 y x))
0.0b
(+.f64 x (*.f64 y (-.f64 z x)))
11.5b
(+.f64 x (*.f64 y z))
29.9b
(*.f64 y (-.f64 z x))
51.2b
(*.f64 y (neg.f64 x))
40.8b
(*.f64 y z)
21.6b
(*.f64 x (-.f64 1 y))
32.9b
x
Compiler

Compiled 59 to 39 computations (33.9% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune3.0ms (0%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done077
Total088
Error
0.0b
Counts
8 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
21.6b
(-.f64 x (*.f64 y x))
0.0b
(+.f64 x (*.f64 y (-.f64 z x)))
11.5b
(+.f64 x (*.f64 y z))
29.9b
(*.f64 y (-.f64 z x))
51.2b
(*.f64 y (neg.f64 x))
40.8b
(*.f64 y z)
21.6b
(*.f64 x (-.f64 1 y))
32.9b
x
Compiler

Compiled 59 to 39 computations (33.9% saved)

regimes70.0ms (0.4%)

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

4 calls:

52.0ms
(+.f64 x (*.f64 y (-.f64 z x)))
6.0ms
x
5.0ms
z
5.0ms
y
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(+.f64 x (*.f64 y (-.f64 z x)))
Compiler

Compiled 66 to 31 computations (53% saved)

regimes118.0ms (0.6%)

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

3 calls:

79.0ms
z
23.0ms
x
14.0ms
y
Results
ErrorSegmentsBranch
5.0b5x
0.8b3y
5.8b3z
Compiler

Compiled 49 to 24 computations (51% saved)

bsearch28.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
1.977751257901794e-14
3484.1173380990363
13.0ms
-86637.3526839423
-143.2967135657492
Results
25.0ms288×body256valid
0.0msbody256infinite
Compiler

Compiled 340 to 227 computations (33.2% saved)

regimes121.0ms (0.6%)

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

3 calls:

54.0ms
x
51.0ms
z
13.0ms
y
Results
ErrorSegmentsBranch
10.9b5x
9.9b3y
12.9b5z
Compiler

Compiled 33 to 20 computations (39.4% saved)

bsearch27.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
12.0ms
1.6955706811489135e-45
4.43740857178208e-43
15.0ms
-3.3088772601939043e-93
-6.294743425566013e-102
Results
23.0ms272×body256valid
Compiler

Compiled 322 to 232 computations (28% saved)

regimes183.0ms (1%)

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

3 calls:

92.0ms
z
76.0ms
x
14.0ms
y
Results
ErrorSegmentsBranch
14.2b3x
18.4b4y
14.5b5z
Compiler

Compiled 28 to 18 computations (35.7% saved)

bsearch23.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
2.720142058705023e-78
1.0746215932266799e-75
9.0ms
-7.555989339575484e-118
-1.6430143230003923e-118
Results
21.0ms224×body256valid
Compiler

Compiled 240 to 179 computations (25.4% saved)

regimes44.0ms (0.2%)

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

3 calls:

18.0ms
z
15.0ms
x
10.0ms
y
Results
ErrorSegmentsBranch
22.3b5x
20.2b3y
24.2b5z
Compiler

Compiled 23 to 15 computations (34.8% saved)

bsearch32.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
18.0ms
1.977751257901794e-14
3484.1173380990363
14.0ms
-3.3088772601939043e-93
-6.294743425566013e-102
Results
26.0ms304×body256valid
Compiler

Compiled 254 to 192 computations (24.4% saved)

regimes8.6s (44.8%)

Accuracy

Total -41.2b remaining (-198.4%)

Threshold costs -41.2b (-198.4%)

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

3 calls:

6.2s
x
2.3s
z
13.0ms
y
Results
ErrorSegmentsBranch
22.3b5x
20.8b3y
24.2b5z
Compiler

Compiled 19 to 13 computations (31.6% saved)

bsearch27.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
1.6955706811489135e-45
4.43740857178208e-43
14.0ms
-3.3088772601939043e-93
-6.294743425566013e-102
Results
24.0ms272×body256valid
Compiler

Compiled 220 to 164 computations (25.5% saved)

simplify5.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
044255
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 x (*.f64 y (-.f64 z x)))
(if (<=.f64 y -145) (*.f64 y (-.f64 z x)) (if (<=.f64 y 1) (+.f64 x (*.f64 y z)) (*.f64 y (-.f64 z x))))
(if (<=.f64 y -3875095261576825/1174271291386916613944740298394668513687841274454159935353645485766104512557304221731849499192384351515967488) (*.f64 y (-.f64 z x)) (if (<=.f64 y 7532522082464017/25108406941546723055343157692830665664409421777856138051584) (*.f64 x (-.f64 1 y)) (*.f64 y (-.f64 z x))))
(if (<=.f64 x -6586975938928937/11356855067118857664833184498250070849275646260739344691898284362197488876771842551971735167402555711886914400097909030211478150447104) (*.f64 x (-.f64 1 y)) (if (<=.f64 x 8017773602852537/32592575621351777380295131014550050576823494298654980010178247189670100796213387298934358016) (*.f64 y z) (*.f64 x (-.f64 1 y))))
(if (<=.f64 y -6575919231766733/2348542582773833227889480596789337027375682548908319870707290971532209025114608443463698998384768703031934976) (*.f64 y z) (if (<=.f64 y 1) x (*.f64 y (neg.f64 x))))
(if (<=.f64 y -3875095261576825/1174271291386916613944740298394668513687841274454159935353645485766104512557304221731849499192384351515967488) (*.f64 y z) (if (<=.f64 y 2611274321920859/100433627766186892221372630771322662657637687111424552206336) x (*.f64 y z)))
x
Outputs
(+.f64 x (*.f64 y (-.f64 z x)))
(if (<=.f64 y -145) (*.f64 y (-.f64 z x)) (if (<=.f64 y 1) (+.f64 x (*.f64 y z)) (*.f64 y (-.f64 z x))))
(if (<=.f64 y -3875095261576825/1174271291386916613944740298394668513687841274454159935353645485766104512557304221731849499192384351515967488) (*.f64 y (-.f64 z x)) (if (<=.f64 y 7532522082464017/25108406941546723055343157692830665664409421777856138051584) (*.f64 x (-.f64 1 y)) (*.f64 y (-.f64 z x))))
(if (<=.f64 x -6586975938928937/11356855067118857664833184498250070849275646260739344691898284362197488876771842551971735167402555711886914400097909030211478150447104) (*.f64 x (-.f64 1 y)) (if (<=.f64 x 8017773602852537/32592575621351777380295131014550050576823494298654980010178247189670100796213387298934358016) (*.f64 y z) (*.f64 x (-.f64 1 y))))
(if (<=.f64 y -6575919231766733/2348542582773833227889480596789337027375682548908319870707290971532209025114608443463698998384768703031934976) (*.f64 y z) (if (<=.f64 y 1) x (*.f64 y (neg.f64 x))))
(if (<=.f64 y -3875095261576825/1174271291386916613944740298394668513687841274454159935353645485766104512557304221731849499192384351515967488) (*.f64 y z) (if (<=.f64 y 2611274321920859/100433627766186892221372630771322662657637687111424552206336) x (*.f64 y z)))
x
Compiler

Compiled 127 to 74 computations (41.7% saved)

soundness0.0ms (0%)

end251.0ms (1.3%)

Compiler

Compiled 109 to 49 computations (55% saved)

Profiling

Loading profile data...