Details

Time bar (total: 7.5s)

analyze423.0ms (5.6%)

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
0%0%99.9%0.1%0%0%0%7
3.1%3.1%96.7%0.1%0%0%0%8
3.2%3.1%95.2%0.1%1.6%0%0%9
20.3%19.5%76.5%0.1%3.9%0%0%10
26.4%25.4%70.6%0.1%3.9%0%0%11
30.2%28.5%65.7%0.1%5.7%0%0%12
Compiler

Compiled 11 to 7 computations (36.4% saved)

sample1.8s (23.3%)

Results
1.6s8256×body256valid
139.0ms1115×body256infinite
Bogosity

preprocess161.0ms (2.1%)

Algorithm
egg-herbie
Rules
2068×associate-/l/_binary64
2054×associate-/r/_binary64
1625×fma-def_binary64
408×*-commutative_binary64
372×distribute-rgt-out_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01640
14640
28240
313040
417040
519140
620232
726332
8142632
9233132
10289632
11294532
12294832
13294832
14411932
15423232
16431632
17433132
18437532
19438032
20438032
033
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(/.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 (*.f64 y (+.f64 x z)) z)
(/.f64 (*.f64 z (+.f64 y x)) x)
(/.f64 (*.f64 x (+.f64 z y)) y)
Outputs
(/.f64 (*.f64 x (+.f64 y z)) z)
(/.f64 x (/.f64 z (+.f64 y z)))
(*.f64 (/.f64 x z) (+.f64 y z))
(*.f64 (+.f64 y z) (/.f64 x z))
(*.f64 x (/.f64 (+.f64 y z) z))
(fma.f64 x (/.f64 y z) x)
(/.f64 (*.f64 y (+.f64 x z)) z)
(*.f64 (/.f64 y z) (+.f64 x z))
(*.f64 (+.f64 x z) (/.f64 y z))
(*.f64 y (/.f64 (+.f64 x z) z))
(fma.f64 x (/.f64 y z) y)
(/.f64 (*.f64 z (+.f64 y x)) x)
(/.f64 z (/.f64 x (+.f64 x y)))
(*.f64 (/.f64 z x) (+.f64 x y))
(*.f64 (+.f64 x y) (/.f64 z x))
(*.f64 z (/.f64 (+.f64 x y) x))
(fma.f64 y (/.f64 z x) z)
(fma.f64 z (/.f64 y x) z)
(/.f64 (*.f64 x (+.f64 z y)) y)
(/.f64 x (/.f64 y (+.f64 y z)))
(*.f64 (/.f64 x y) (+.f64 y z))
(*.f64 (+.f64 y z) (/.f64 x y))
(*.f64 x (/.f64 (+.f64 y z) y))
(fma.f64 z (/.f64 x y) x)
Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify92.0ms (1.2%)

Algorithm
egg-herbie
Rules
772×associate-/l*_binary64
727×associate-/l/_binary64
666×fma-def_binary64
599×associate-/r/_binary64
549×associate-*l/_binary64
Iterations

Useful iterations: 6 (0.0ms)

IterNodesCost
0710
11710
22810
34110
45010
55610
6608
7758
82578
911908
1014508
1115878
1216008
1316058
1416108
1561338
1668398
1771548
1874438
1976428
2078948
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(/.f64 (*.f64 x (+.f64 y z)) z)
Outputs
(/.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 (/.f64 x z) (+.f64 y z))
(*.f64 (+.f64 y z) (/.f64 x z))
(*.f64 x (/.f64 (+.f64 y z) z))
(fma.f64 y (/.f64 x z) x)
(fma.f64 x (/.f64 y z) x)

eval1.0ms (0%)

Compiler

Compiled 16 to 8 computations (50% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
3.1b
(fma.f64 x (/.f64 y z) x)
11.8b
(/.f64 (*.f64 x (+.f64 y z)) z)
Compiler

Compiled 19 to 11 computations (42.1% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series63.0ms (0.8%)

Counts
2 → 72
Calls

18 calls:

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

rewrite81.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
709×prod-diff_binary64
475×log-prod_binary64
349×pow-prod-down_binary64
231×pow2_binary64
204×fma-def_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0717
116217
2258117
Stop Event
node limit
Counts
2 → 112
Calls
Call 1
Inputs
(/.f64 (*.f64 x (+.f64 y z)) z)
(*.f64 x (+.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (/.f64 x z) (+.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (*.f64 (/.f64 x z) (+.f64 y z)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (*.f64 (/.f64 x z) (+.f64 y z))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 (/.f64 x z) (+.f64 y z))))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 (/.f64 x z) (+.f64 y z))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (/.f64 x z) (+.f64 y z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (/.f64 1 (/.f64 z (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (+.f64 y z) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y z) (*.f64 x (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 y z)) (/.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 x z) (+.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (/.f64 x z) (+.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) 2) (*.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (/.f64 x z) (+.f64 y z))) (pow.f64 (cbrt.f64 (*.f64 (/.f64 x z) (+.f64 y z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (/.f64 x z) (+.f64 y z))) 2) (cbrt.f64 (*.f64 (/.f64 x z) (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) (*.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (/.f64 x z) (+.f64 y z))) (sqrt.f64 (*.f64 (/.f64 x z) (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (neg.f64 (+.f64 y z))) (/.f64 1 (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 z) (*.f64 x (+.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x 1) (/.f64 (+.f64 y z) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y z) 1) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x z) (+.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) 2) 1) (/.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) 1) (/.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (pow.f64 (cbrt.f64 z) 2)) (/.f64 (+.f64 y z) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y z) (pow.f64 (cbrt.f64 z) 2)) (/.f64 x (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 z) -2) (/.f64 (*.f64 x (+.f64 y z)) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) 2) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 (*.f64 (/.f64 x z) (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) (pow.f64 (cbrt.f64 z) 2)) (/.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (sqrt.f64 z)) (/.f64 (+.f64 y z) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y z) (sqrt.f64 z)) (/.f64 x (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 z -1/2) (/.f64 (*.f64 x (+.f64 y z)) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) 2) (sqrt.f64 z)) (/.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 x z) (+.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (/.f64 x z) (+.f64 y z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (/.f64 x z) (+.f64 y z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (/.f64 x z) (+.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (/.f64 x z) (+.f64 y z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 z x) (+.f64 y z)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3) (pow.f64 z 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (/.f64 z x) (+.f64 y z)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 x (+.f64 y z)) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (/.f64 x z) (+.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (/.f64 x z) (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (/.f64 x z) (+.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (/.f64 x z) (+.f64 y z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (/.f64 x z) (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (/.f64 x z) (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (/.f64 x z) (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (/.f64 x z) (+.f64 y z))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (/.f64 x z) (+.f64 y z)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (/.f64 x z) (+.f64 y z)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (/.f64 x z) (+.f64 y z)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (/.f64 z x) (+.f64 y z))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (/.f64 x z) (+.f64 y z))) 1) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x y) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (+.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x y) 1) (*.f64 (*.f64 x z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (+.f64 y z))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (+.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (+.f64 y z)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (+.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (+.f64 y z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 x z) 3)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (pow.f64 (*.f64 x z) 2) (*.f64 (*.f64 x y) (*.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 x z) 2)) (-.f64 (*.f64 x y) (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 y 3) (pow.f64 z 3)) x) (fma.f64 z (-.f64 z y) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y y) (*.f64 z z)) x) (-.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 (pow.f64 y 3) (pow.f64 z 3))) (fma.f64 z (-.f64 z y) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 (*.f64 y y) (*.f64 z z))) (-.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (+.f64 y z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (+.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (+.f64 y z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (+.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (+.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (+.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 x z)) (exp.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (+.f64 y z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (+.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (+.f64 y z))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (+.f64 y z)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (+.f64 y z)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (+.f64 y z)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 x (+.f64 y z))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x z (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z x (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) x) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) x) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x y) 1 (*.f64 (*.f64 x z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x z)) 2) (cbrt.f64 (*.f64 x z)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x z)) (sqrt.f64 (*.f64 x z)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 z)) (sqrt.f64 z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (sqrt.f64 x)) (sqrt.f64 x) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 x z))))))

simplify230.0ms (3.1%)

Algorithm
egg-herbie
Rules
902×fma-def_binary64
789×associate-/l/_binary64
721×associate-/r/_binary64
611×*-commutative_binary64
519×distribute-rgt-out_binary64
Iterations

Useful iterations: 6 (0.0ms)

IterNodesCost
012558
123558
234558
343558
459558
577558
690498
7144498
8320498
91491498
101898498
112141498
122185498
132194498
142201498
154202498
165118498
175783498
187008498
197347498
207379498
217416498
227467498
237619498
247969498
Stop Event
node limit
Counts
184 → 123
Calls
Call 1
Inputs
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 (+.f64 y z) x)
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 y x))
Outputs
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 y x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))
(+.f64 (*.f64 z x) (*.f64 y x))
(*.f64 (+.f64 y z) x)
(*.f64 x (+.f64 y z))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
2.9b
(fma.f64 x (/.f64 y z) x)
Compiler

Compiled 15 to 5 computations (66.7% saved)

series7.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
2.0ms
y
@-inf
(fma.f64 x (/.f64 y z) x)
1.0ms
x
@0
(fma.f64 x (/.f64 y z) x)
1.0ms
x
@-inf
(fma.f64 x (/.f64 y z) x)
1.0ms
y
@inf
(fma.f64 x (/.f64 y z) x)
1.0ms
z
@0
(fma.f64 x (/.f64 y z) x)

rewrite100.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
669×pow1_binary64
616×add-log-exp_binary64
616×log1p-expm1-u_binary64
616×expm1-log1p-u_binary64
601×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068
11248
216248
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(fma.f64 x (/.f64 y z) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (/.f64 (*.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (*.f64 x y) z) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 (*.f64 x y) z) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x (/.f64 y z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x (/.f64 y z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x (/.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x (/.f64 y z) x)) (pow.f64 (cbrt.f64 (fma.f64 x (/.f64 y z) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x (/.f64 y z) x)) 2) (cbrt.f64 (fma.f64 x (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x (/.f64 y z) x)) (sqrt.f64 (fma.f64 x (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (/.f64 (*.f64 x y) z) 3) (pow.f64 x 3)) (+.f64 (*.f64 (/.f64 (*.f64 x y) z) (/.f64 (*.f64 x y) z)) (-.f64 (*.f64 x x) (*.f64 (/.f64 (*.f64 x y) z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (/.f64 (*.f64 x y) z) (/.f64 (*.f64 x y) z)) (*.f64 x x)) (-.f64 (/.f64 (*.f64 x y) z) x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x (/.f64 y z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x (/.f64 y z) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x (/.f64 y z) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x (/.f64 y z) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x (/.f64 y z) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x (/.f64 y z) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x (/.f64 y z) x)))))))

simplify45.0ms (0.6%)

Algorithm
egg-herbie
Rules
152×fma-def_binary64
143×fma-neg_binary64
54×cancel-sign-sub-inv_binary64
52×distribute-rgt-in_binary64
49×associate-/l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
016324
136324
277264
3181264
4371264
5688264
6939264
71118264
81132264
91137264
Stop Event
saturated
Counts
57 → 28
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 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
Outputs
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 y (/.f64 x z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 y (/.f64 x z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 y (/.f64 x z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(fma.f64 (/.f64 y z) x x)
(fma.f64 y (/.f64 x z) x)

eval27.0ms (0.4%)

Compiler

Compiled 1760 to 549 computations (68.8% saved)

prune64.0ms (0.8%)

Pruning

7 alts after pruning (7 fresh and 0 done)

PrunedKeptTotal
New1447151
Fresh000
Picked101
Done101
Total1467153
Error
0b
Counts
153 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
44.2b
(*.f64 y (/.f64 x z))
43.6b
(/.f64 (*.f64 y x) z)
4.3b
(+.f64 (/.f64 (*.f64 y x) z) x)
22.0b
x
14.3b
(pow.f64 (/.f64 (/.f64 z x) (+.f64 y z)) -1)
14.1b
(*.f64 (/.f64 x z) (+.f64 y z))
3.1b
(*.f64 (+.f64 1 (/.f64 y z)) x)
Compiler

Compiled 120 to 77 computations (35.8% saved)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
2.9b
(*.f64 (+.f64 1 (/.f64 y z)) x)
Compiler

Compiled 22 to 10 computations (54.5% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

9 calls:

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

rewrite57.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
893×pow1_binary64
827×add-log-exp_binary64
827×log1p-expm1-u_binary64
827×expm1-log1p-u_binary64
810×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0810
116610
2221410
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(*.f64 (+.f64 1 (/.f64 y z)) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 (/.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 x (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 y z) x) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (/.f64 y z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (+.f64 x (*.f64 (/.f64 y z) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 (/.f64 y z) 3)) x) (+.f64 1 (-.f64 (pow.f64 (/.f64 y z) 2) (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 (/.f64 y z) 2)) x) (-.f64 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 1 (pow.f64 (/.f64 y z) 3))) (+.f64 1 (-.f64 (pow.f64 (/.f64 y z) 2) (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 (pow.f64 (/.f64 y z) 2))) (-.f64 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 (/.f64 y z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 x (*.f64 (/.f64 y z) x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 x (*.f64 (/.f64 y z) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (+.f64 1 (/.f64 y z))) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 x (*.f64 (/.f64 y z) x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (+.f64 1 (/.f64 y z)) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (+.f64 1 (/.f64 y z)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 x (*.f64 (/.f64 y z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 x (*.f64 (/.f64 y z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log1p.f64 (/.f64 y z)) (log.f64 x)))))))

simplify23.0ms (0.3%)

Algorithm
egg-herbie
Rules
27×fma-def_binary64
10×associate-*r*_binary64
associate-/r/_binary64
associate-/l*_binary64
associate-*l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
07204
111204
215168
322168
429168
536168
646168
774168
887168
9107168
10116168
11118168
Stop Event
saturated
Counts
45 → 26
Calls
Call 1
Inputs
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
Outputs
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 y (/.f64 z x)))
(+.f64 x (*.f64 (/.f64 y z) x))
(fma.f64 (/.f64 y z) x x)
(fma.f64 x (/.f64 y z) x)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
7.0b
(*.f64 y (/.f64 x z))
Compiler

Compiled 14 to 5 computations (64.3% saved)

series5.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite55.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
681×pow1_binary64
628×add-log-exp_binary64
628×log1p-expm1-u_binary64
628×expm1-log1p-u_binary64
613×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11257
216727
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(*.f64 y (/.f64 x z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (/.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 y (/.f64 z x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y x) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 y x)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 y x) 1) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 y x) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 y x) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 x) y) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (neg.f64 x)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (/.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (/.f64 x z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (/.f64 x z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (/.f64 x z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (/.f64 x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (/.f64 x z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 y 3) (pow.f64 (/.f64 x z) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 y 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (/.f64 x z))))))))

simplify16.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
associate-/r/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
19252
213252
316252
417252
Stop Event
saturated
Counts
58 → 23
Calls
Call 1
Inputs
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
Outputs
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.4b
(/.f64 (*.f64 y x) z)
Compiler

Compiled 14 to 5 computations (64.3% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

9 calls:

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

rewrite101.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
712×pow1_binary64
659×add-log-exp_binary64
659×log1p-expm1-u_binary64
659×expm1-log1p-u_binary64
644×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11257
217317
Stop Event
node limit
Counts
1 → 41
Calls
Call 1
Inputs
(/.f64 (*.f64 y x) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (/.f64 y z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (/.f64 1 (/.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (*.f64 x (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 y (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y x) (/.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 y z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (/.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (/.f64 y z) x)) (pow.f64 (cbrt.f64 (*.f64 (/.f64 y z) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (/.f64 y z) x)) 2) (cbrt.f64 (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (*.f64 (cbrt.f64 (*.f64 y x)) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (/.f64 y z) x)) (sqrt.f64 (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y x)) (*.f64 (sqrt.f64 (*.f64 y x)) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (neg.f64 y)) (/.f64 1 (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 z) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y 1) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x 1) (/.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y z) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) 1) (/.f64 (cbrt.f64 (*.f64 y x)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 y x)) 1) (/.f64 (sqrt.f64 (*.f64 y x)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y (pow.f64 (cbrt.f64 z) 2)) (/.f64 x (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (pow.f64 (cbrt.f64 z) 2)) (/.f64 y (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 z) 2)) (/.f64 (*.f64 y x) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 y x)) (pow.f64 (cbrt.f64 z) 2)) (/.f64 (sqrt.f64 (*.f64 y x)) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y (sqrt.f64 z)) (/.f64 x (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (sqrt.f64 z)) (/.f64 y (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 z)) (/.f64 (*.f64 y x) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (sqrt.f64 z)) (/.f64 (cbrt.f64 (*.f64 y x)) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 y z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (/.f64 y z) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (/.f64 y z) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (/.f64 y z) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 z (*.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 y x) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (/.f64 y z) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (/.f64 y z) x)))))))

simplify9.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
41 → 41
Calls
Call 1
Inputs
Outputs

localize12.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 6 computations (68.4% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite73.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
764×prod-diff_binary64
459×log-prod_binary64
391×pow-prod-down_binary64
231×pow2_binary64
215×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0710
116210
225798
Stop Event
node limit
Counts
1 → 84
Calls
Call 1
Inputs
(*.f64 (/.f64 x z) (+.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 x (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 x z) y) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 (/.f64 x z) y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (/.f64 x z) y) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (fma.f64 (/.f64 x z) y x))) 2)) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 (/.f64 x z) y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 (/.f64 x z) y x)))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 (/.f64 x z) y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 (/.f64 x z) y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 x (/.f64 z (+.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z y) (/.f64 z x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 z (*.f64 x (+.f64 z y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 y 3) (pow.f64 z 3)) (*.f64 (/.f64 z x) (fma.f64 z (-.f64 z y) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 y y) (*.f64 z z)) (*.f64 (/.f64 z x) (-.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 z y)) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (+.f64 z y))) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 (pow.f64 y 3) (pow.f64 z 3))) (*.f64 z (fma.f64 z (-.f64 z y) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 x) (+.f64 (pow.f64 y 3) (pow.f64 z 3))) (*.f64 (neg.f64 z) (fma.f64 z (-.f64 z y) (*.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 (*.f64 y y) (*.f64 z z))) (*.f64 z (-.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 x) (-.f64 (*.f64 y y) (*.f64 z z))) (*.f64 (neg.f64 z) (-.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 y 3) (pow.f64 z 3)) x) (*.f64 (fma.f64 z (-.f64 z y) (*.f64 y y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y y) (*.f64 z z)) x) (*.f64 (-.f64 y z) z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 y 3) (pow.f64 z 3)) 1) (*.f64 (fma.f64 z (-.f64 z y) (*.f64 y y)) (/.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y y) (*.f64 z z)) 1) (*.f64 (-.f64 y z) (/.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 y 3) (pow.f64 z 3)) (neg.f64 x)) (*.f64 (fma.f64 z (-.f64 z y) (*.f64 y y)) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y y) (*.f64 z z)) (neg.f64 x)) (*.f64 (-.f64 y z) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (/.f64 x z) y) 3) (pow.f64 x 3)) (+.f64 (pow.f64 (*.f64 (/.f64 x z) y) 2) (-.f64 (*.f64 x x) (*.f64 (*.f64 (/.f64 x z) y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 (/.f64 x z) y) 2) (*.f64 x x)) (-.f64 (*.f64 (/.f64 x z) y) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 x (+.f64 z y)) 1) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 x (+.f64 z y)) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 x (+.f64 z y)) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 x) (+.f64 z y)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 y 3) (pow.f64 z 3)) (/.f64 x z)) (fma.f64 z (-.f64 z y) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 y y) (*.f64 z z)) (/.f64 x z)) (-.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (/.f64 x z) (+.f64 (pow.f64 y 3) (pow.f64 z 3))) (fma.f64 z (-.f64 z y) (*.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (/.f64 x z) (-.f64 (*.f64 y y) (*.f64 z z))) (-.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z y) (neg.f64 x)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 (/.f64 x z) y x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (/.f64 x z) y x) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (/.f64 x z) y x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 (/.f64 x z) y x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 (/.f64 x z) y x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 z (*.f64 x (+.f64 z y))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (/.f64 x z) y x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 (/.f64 x z) y x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 (/.f64 x z) y x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 x) (exp.f64 (*.f64 (/.f64 x z) y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 (/.f64 x z) y x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 (/.f64 x z) y x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 (/.f64 x z) y x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 (/.f64 x z) y x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 (/.f64 x z) y x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (fma.f64 (/.f64 x z) y x))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 (/.f64 x z) y x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 (/.f64 x z) y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 1 (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 (/.f64 1 z) y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z (/.f64 x z) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x z) z (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x z) y x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y (/.f64 x z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (/.f64 x z) y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) (/.f64 x z)) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) (/.f64 x z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 x z)) 2) (*.f64 (cbrt.f64 (/.f64 x z)) z) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 x z)) 2) (*.f64 (cbrt.f64 (/.f64 x z)) y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) (/.f64 x z)) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) (/.f64 x z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 x z)) (*.f64 (sqrt.f64 (/.f64 x z)) z) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 x z)) (*.f64 (sqrt.f64 (/.f64 x z)) y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (/.f64 x z) y) 1 x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (/.f64 x z) y)) 2) (cbrt.f64 (*.f64 (/.f64 x z) y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (/.f64 x z) y)) (sqrt.f64 (*.f64 (/.f64 x z) y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z x) (/.f64 1 z) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y x) (/.f64 1 z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (/.f64 x z) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (/.f64 x z) (sqrt.f64 z)) (sqrt.f64 z) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (pow.f64 (cbrt.f64 (/.f64 x z)) 2)) (cbrt.f64 (/.f64 x z)) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (sqrt.f64 (/.f64 x z))) (sqrt.f64 (/.f64 x z)) (*.f64 (/.f64 x z) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (/.f64 x z) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (/.f64 x z) (sqrt.f64 y)) (sqrt.f64 y) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 (/.f64 x z)) 2)) (cbrt.f64 (/.f64 x z)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 (/.f64 x z))) (sqrt.f64 (/.f64 x z)) x)))))

simplify228.0ms (3%)

Algorithm
egg-herbie
Rules
904×fma-def_binary64
787×associate-/l/_binary64
700×associate-/r/_binary64
611×*-commutative_binary64
518×distribute-rgt-out_binary64
Iterations

Useful iterations: 6 (0.0ms)

IterNodesCost
010324
117324
231324
346324
462324
580324
693264
7147264
8323264
91478264
101882264
112125264
122169264
132178264
142185264
154148264
165064264
175729264
186954264
197293264
207325264
217362264
227413264
237565264
247915264
257961264
Stop Event
node limit
Counts
120 → 89
Calls
Call 1
Inputs
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
Outputs
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 (+.f64 y z) x) z)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
x
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(/.f64 (+.f64 y z) (/.f64 z x))
(*.f64 (/.f64 (+.f64 y z) z) x)
(*.f64 x (/.f64 (+.f64 y z) z))
(*.f64 (+.f64 y z) (/.f64 x z))
(fma.f64 x (/.f64 y z) x)
(fma.f64 y (/.f64 x z) x)

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series3.0ms (0%)

Counts
1 → 18
Calls

9 calls:

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

rewrite94.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
970×pow1_binary64
904×add-log-exp_binary64
904×log1p-expm1-u_binary64
904×expm1-log1p-u_binary64
84×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
115610
2237810
Stop Event
node limit
Counts
1 → 35
Calls
Call 1
Inputs
(+.f64 (/.f64 (*.f64 y x) z) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 x (*.f64 (/.f64 y z) x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (-.f64 (*.f64 (/.f64 y z) x) x)) (/.f64 (*.f64 x x) (-.f64 (*.f64 (/.f64 y z) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 (/.f64 y z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))) (pow.f64 (cbrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))) 2) (cbrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))) (sqrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 (/.f64 y z) x) 3) (pow.f64 x 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (*.f64 x (-.f64 x (*.f64 (/.f64 y z) x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (*.f64 x x)) (/.f64 1 (-.f64 (*.f64 (/.f64 y z) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (*.f64 x (-.f64 x (*.f64 (/.f64 y z) x)))) (+.f64 (pow.f64 (*.f64 (/.f64 y z) x) 3) (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 (/.f64 y z) x) x) (-.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (/.f64 y z) x) 3) (pow.f64 x 3)) (+.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (*.f64 x (-.f64 x (*.f64 (/.f64 y z) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (/.f64 y z) x) 3) (pow.f64 x 3)) (+.f64 (*.f64 x x) (-.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (/.f64 (*.f64 (*.f64 y x) x) z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (*.f64 x x)) (-.f64 (*.f64 (/.f64 y z) x) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 (/.f64 y z) x) 3) (pow.f64 x 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (*.f64 x (-.f64 x (*.f64 (/.f64 y z) x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2) (*.f64 x x))) (neg.f64 (-.f64 (*.f64 (/.f64 y z) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 (/.f64 y z) x) 2)) (-.f64 x (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 (/.f64 y z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 x (*.f64 (/.f64 y z) x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 x (*.f64 (/.f64 y z) x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 x (*.f64 (/.f64 y z) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 x (*.f64 (/.f64 y z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 x (*.f64 (/.f64 y z) x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 x (*.f64 (/.f64 y z) x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 x (*.f64 (/.f64 y z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 x (*.f64 (/.f64 y z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 x (*.f64 (/.f64 y z) x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y x) (/.f64 1 z) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 x (*.f64 (/.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (/.f64 y z) x) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (/.f64 y z) x)) 2) (cbrt.f64 (*.f64 (/.f64 y z) x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 x) (*.f64 (/.f64 y z) x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (/.f64 y z) x)) (sqrt.f64 (*.f64 (/.f64 y z) x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (sqrt.f64 x) (*.f64 (/.f64 y z) x))))))

simplify51.0ms (0.7%)

Algorithm
egg-herbie
Rules
151×fma-def_binary64
147×fma-neg_binary64
54×cancel-sign-sub-inv_binary64
52×distribute-rgt-in_binary64
49×associate-/l*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
015144
134144
273120
3181120
4369120
5685120
6940120
71118120
81132120
91137120
Stop Event
saturated
Counts
53 → 41
Calls
Call 1
Inputs
x
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(*.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 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(/.f64 (*.f64 y x) z)
x
x
Outputs
x
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 x y) z)
(*.f64 x (/.f64 y z))
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 x y) z)
(*.f64 x (/.f64 y z))
(*.f64 (+.f64 1 (/.f64 y z)) x)
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 (+.f64 1 (/.f64 y z)) x)
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (/.f64 y z)) 1) x))
(*.f64 x (+.f64 1 (/.f64 y z)))
(fma.f64 x (/.f64 y z) x)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 x y) z)
(*.f64 x (/.f64 y z))
x
x

eval78.0ms (1%)

Compiler

Compiled 2974 to 910 computations (69.4% saved)

prune47.0ms (0.6%)

Pruning

8 alts after pruning (3 fresh and 5 done)

PrunedKeptTotal
New2583261
Fresh202
Picked011
Done044
Total2608268
Error
0b
Counts
268 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
44.2b
(*.f64 y (/.f64 x z))
43.6b
(/.f64 (*.f64 y x) z)
4.3b
(+.f64 (/.f64 (*.f64 y x) z) x)
22.0b
x
14.1b
(*.f64 (/.f64 x z) (+.f64 y z))
3.1b
(*.f64 (+.f64 1 (/.f64 y z)) x)
44.4b
(/.f64 y (/.f64 z x))
44.3b
(*.f64 (/.f64 y z) x)
Compiler

Compiled 66 to 42 computations (36.4% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
5.5b
(*.f64 (/.f64 y z) x)
Compiler

Compiled 14 to 5 computations (64.3% saved)

series3.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite60.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
682×pow1_binary64
629×add-log-exp_binary64
629×log1p-expm1-u_binary64
629×expm1-log1p-u_binary64
614×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11257
216757
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(*.f64 (/.f64 y z) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (/.f64 y z) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 y (/.f64 z x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 x (/.f64 z y))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y x) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 y x)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 y x) 1) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 y x) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 y x) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 y) x) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (neg.f64 y)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 y z) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (/.f64 y z) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (/.f64 y z) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (/.f64 y z) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (/.f64 y z) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (/.f64 y z) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 y z) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (/.f64 y z) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (/.f64 y z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (/.f64 y z) x)))))))

simplify38.0ms (0.5%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
associate-/r/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
19252
213252
316252
417252
Stop Event
saturated
Counts
59 → 24
Calls
Call 1
Inputs
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
Outputs
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.8b
(/.f64 y (/.f64 z x))
Compiler

Compiled 14 to 5 computations (64.3% saved)

series2.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite59.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
780×pow1_binary64
724×add-log-exp_binary64
724×log1p-expm1-u_binary64
724×expm1-log1p-u_binary64
707×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11317
219157
Stop Event
node limit
Counts
1 → 41
Calls
Call 1
Inputs
(/.f64 y (/.f64 z x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 y (/.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (/.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 y (/.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 y (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 y (/.f64 x z))) (pow.f64 (cbrt.f64 (*.f64 y (/.f64 x z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 y (/.f64 x z))) 2) (cbrt.f64 (*.f64 y (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 y (/.f64 x z))) (sqrt.f64 (*.f64 y (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 y) (/.f64 1 (/.f64 (neg.f64 z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x z) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y z) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 z) (/.f64 y (/.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 y) 2) z) (/.f64 (cbrt.f64 y) (/.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 y) z) (/.f64 (sqrt.f64 y) (/.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 y) 2) 1) (/.f64 (cbrt.f64 y) (/.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 y) 1) (/.f64 (sqrt.f64 y) (/.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (/.f64 z x)) 2)) (/.f64 y (cbrt.f64 (/.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 y) 2) (pow.f64 (cbrt.f64 (/.f64 z x)) 2)) (cbrt.f64 (*.f64 y (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 y) (pow.f64 (cbrt.f64 (/.f64 z x)) 2)) (/.f64 (sqrt.f64 y) (cbrt.f64 (/.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (/.f64 z x))) (/.f64 y (sqrt.f64 (/.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 y) 2) (sqrt.f64 (/.f64 z x))) (/.f64 (cbrt.f64 y) (sqrt.f64 (/.f64 z x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y 1) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y (neg.f64 z)) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 y z) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 y z) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 y z) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (/.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 y (/.f64 x z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 y (/.f64 x z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 y (/.f64 x z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 z (*.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 y (/.f64 (neg.f64 z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 y (/.f64 x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 y (/.f64 x z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 y 3) (pow.f64 (/.f64 z x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 y (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 y (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 y (/.f64 x z))))))))

simplify17.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
associate-/r/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
19252
213252
316252
417252
Stop Event
saturated
Counts
77 → 42
Calls
Call 1
Inputs
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
Outputs
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))

eval11.0ms (0.1%)

Compiler

Compiled 581 to 217 computations (62.7% saved)

prune52.0ms (0.7%)

Pruning

8 alts after pruning (2 fresh and 6 done)

PrunedKeptTotal
New65166
Fresh011
Picked101
Done066
Total66874
Error
0b
Counts
74 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
44.2b
(*.f64 y (/.f64 x z))
43.6b
(/.f64 (*.f64 y x) z)
4.3b
(+.f64 (/.f64 (*.f64 y x) z) x)
22.0b
x
14.1b
(*.f64 (/.f64 x z) (+.f64 y z))
3.1b
(*.f64 (+.f64 1 (/.f64 y z)) x)
43.6b
(/.f64 x (/.f64 z y))
44.3b
(*.f64 (/.f64 y z) x)
Compiler

Compiled 66 to 42 computations (36.4% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
5.2b
(/.f64 x (/.f64 z y))
Compiler

Compiled 14 to 5 computations (64.3% saved)

series2.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite87.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
780×pow1_binary64
724×add-log-exp_binary64
724×log1p-expm1-u_binary64
724×expm1-log1p-u_binary64
707×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11317
219157
Stop Event
node limit
Counts
1 → 41
Calls
Call 1
Inputs
(/.f64 x (/.f64 z y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (/.f64 y z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (/.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (/.f64 x z))))) (#(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 (cbrt.f64 (*.f64 x (/.f64 y z))) (pow.f64 (cbrt.f64 (*.f64 x (/.f64 y z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (/.f64 y z))) 2) (cbrt.f64 (*.f64 x (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (/.f64 y z))) (sqrt.f64 (*.f64 x (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 x) (/.f64 1 (/.f64 (neg.f64 z) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y z) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x z) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 z) (/.f64 x (/.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) z) (/.f64 (cbrt.f64 x) (/.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 x) z) (/.f64 (sqrt.f64 x) (/.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) 1) (/.f64 (cbrt.f64 x) (/.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 x) 1) (/.f64 (sqrt.f64 x) (/.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (/.f64 z y)) 2)) (/.f64 x (cbrt.f64 (/.f64 z y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 (/.f64 z y)) 2)) (cbrt.f64 (*.f64 x (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 x) (pow.f64 (cbrt.f64 (/.f64 z y)) 2)) (/.f64 (sqrt.f64 x) (cbrt.f64 (/.f64 z y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (/.f64 z y))) (/.f64 x (sqrt.f64 (/.f64 z y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (sqrt.f64 (/.f64 z y))) (/.f64 (cbrt.f64 x) (sqrt.f64 (/.f64 z y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x 1) (/.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (neg.f64 z)) (neg.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 x z) 1) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 x z) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 x z) (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (/.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (/.f64 y z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (/.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (/.f64 y z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 z (*.f64 x y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 x (/.f64 (neg.f64 z) y)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (/.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (/.f64 y z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 x 3) (pow.f64 (/.f64 z y) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (/.f64 y z))))))))

simplify15.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
associate-/r/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
19252
213252
316252
417252
Stop Event
saturated
Counts
77 → 42
Calls
Call 1
Inputs
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
Outputs
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))

eval8.0ms (0.1%)

Compiler

Compiled 401 to 153 computations (61.8% saved)

prune13.0ms (0.2%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New42042
Fresh011
Picked011
Done066
Total42850
Error
0b
Counts
50 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
44.2b
(*.f64 y (/.f64 x z))
43.6b
(/.f64 (*.f64 y x) z)
4.3b
(+.f64 (/.f64 (*.f64 y x) z) x)
22.0b
x
14.1b
(*.f64 (/.f64 x z) (+.f64 y z))
3.1b
(*.f64 (+.f64 1 (/.f64 y z)) x)
43.6b
(/.f64 x (/.f64 z y))
44.3b
(*.f64 (/.f64 y z) x)
Compiler

Compiled 66 to 42 computations (36.4% saved)

regimes266.0ms (3.5%)

Counts
13 → 4
Calls
Call 1
Inputs
x
x
(/.f64 x (/.f64 z y))
(/.f64 y (/.f64 z x))
(*.f64 (/.f64 y z) x)
(*.f64 y (/.f64 x z))
(/.f64 (*.f64 y x) z)
(+.f64 (/.f64 (*.f64 y x) z) x)
(*.f64 (/.f64 x z) (+.f64 y z))
(*.f64 (+.f64 1 (/.f64 y z)) x)
(/.f64 (*.f64 x (+.f64 y z)) z)
(fma.f64 x (/.f64 y z) x)
(pow.f64 (/.f64 (/.f64 z x) (+.f64 y z)) -1)
Outputs
(*.f64 (+.f64 1 (/.f64 y z)) x)
(+.f64 (/.f64 (*.f64 y x) z) x)
(fma.f64 x (/.f64 y z) x)
(*.f64 (/.f64 x z) (+.f64 y z))
Calls

4 calls:

92.0ms
z
77.0ms
x
63.0ms
y
30.0ms
(/.f64 (*.f64 x (+.f64 y z)) z)
Results
ErrorSegmentsBranch
1.5b3x
2.1b2y
1.5b3z
0.8b4(/.f64 (*.f64 x (+.f64 y z)) z)
Compiler

Compiled 95 to 40 computations (57.9% saved)

bsearch1.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
2.1476233093279132e+64
5.940047214001853e+71
0.0ms
-3.5907806458566644e-25
-1.894246427269028e-27
0.0ms
-1.7453067964119112e+301
-3.5384353809685963e+288
Compiler

Compiled 16 to 11 computations (31.3% saved)

regimes154.0ms (2.1%)

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

4 calls:

96.0ms
x
22.0ms
(/.f64 (*.f64 x (+.f64 y z)) z)
20.0ms
z
13.0ms
y
Results
ErrorSegmentsBranch
1.5b3x
2.1b2y
1.5b3z
0.8b4(/.f64 (*.f64 x (+.f64 y z)) z)
Compiler

Compiled 80 to 36 computations (55% saved)

bsearch1.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
5.923063560235536e+57
3.6689474708184023e+61
0.0ms
-3.5907806458566644e-25
-1.894246427269028e-27
0.0ms
-1.7453067964119112e+301
-3.5384353809685963e+288
Compiler

Compiled 16 to 11 computations (31.3% saved)

regimes218.0ms (2.9%)

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

3 calls:

149.0ms
z
32.0ms
y
32.0ms
x
Results
ErrorSegmentsBranch
3.3b3x
4.3b1y
4.3b1z
Compiler

Compiled 56 to 25 computations (55.4% saved)

bsearch86.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
68.0ms
-1.63124111330247e+33
-5.9761500546437265e+25
18.0ms
-1.2770847429529458e+157
-3.900672253234394e+156
Compiler

Compiled 38 to 25 computations (34.2% saved)

regimes102.0ms (1.4%)

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

3 calls:

47.0ms
y
41.0ms
z
10.0ms
x
Results
ErrorSegmentsBranch
4.3b1x
4.3b1y
4.3b1z
Compiler

Compiled 49 to 23 computations (53.1% saved)

regimes204.0ms (2.7%)

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

3 calls:

84.0ms
y
63.0ms
x
52.0ms
z
Results
ErrorSegmentsBranch
20.6b3x
16.0b5y
16.9b3z
Compiler

Compiled 42 to 22 computations (47.6% saved)

bsearch323.0ms (4.3%)

Algorithm
binary-search
Steps
TimeLeftRight
58.0ms
2.5011133247133566e+165
4.960826518666571e+168
123.0ms
3.9852176376323996e+104
1.307398162235872e+125
21.0ms
12585843413552300.0
50048733733789700.0
120.0ms
-1.433432693525213e+224
-8.125166566772156e+214
Compiler

Compiled 408 to 291 computations (28.7% saved)

regimes81.0ms (1.1%)

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

3 calls:

30.0ms
x
26.0ms
y
23.0ms
z
Results
ErrorSegmentsBranch
20.8b3x
16.3b5y
17.0b3z
Compiler

Compiled 37 to 20 computations (45.9% saved)

bsearch302.0ms (4%)

Algorithm
binary-search
Steps
TimeLeftRight
87.0ms
2.5011133247133566e+165
4.960826518666571e+168
143.0ms
3.9852176376323996e+104
1.307398162235872e+125
17.0ms
12585843413552300.0
50048733733789700.0
55.0ms
-2.6261529828430007e+123
-1.7226722017125493e+121
Compiler

Compiled 380 to 271 computations (28.7% saved)

regimes57.0ms (0.8%)

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

3 calls:

24.0ms
y
17.0ms
z
14.0ms
x
Results
ErrorSegmentsBranch
20.8b3x
16.4b5y
17.0b3z
Compiler

Compiled 32 to 18 computations (43.8% saved)

bsearch380.0ms (5%)

Algorithm
binary-search
Steps
TimeLeftRight
60.0ms
2.5011133247133566e+165
4.960826518666571e+168
179.0ms
3.9852176376323996e+104
1.307398162235872e+125
49.0ms
12585843413552300.0
50048733733789700.0
92.0ms
-2.6261529828430007e+123
-1.7226722017125493e+121
Compiler

Compiled 380 to 271 computations (28.7% saved)

regimes74.0ms (1%)

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

3 calls:

46.0ms
y
14.0ms
x
13.0ms
z
Results
ErrorSegmentsBranch
20.8b3x
17.0b5y
18.0b3z
Compiler

Compiled 22 to 14 computations (36.4% saved)

bsearch389.0ms (5.2%)

Algorithm
binary-search
Steps
TimeLeftRight
82.0ms
2.5011133247133566e+165
4.960826518666571e+168
178.0ms
3.9852176376323996e+104
1.307398162235872e+125
17.0ms
12585843413552300.0
50048733733789700.0
111.0ms
-2.6261529828430007e+123
-1.7226722017125493e+121
Compiler

Compiled 380 to 271 computations (28.7% saved)

regimes12.0ms (0.2%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0.0b (-0%)

Counts
2 → 1
Calls
Call 1
Inputs
x
x
Outputs
x
Calls

3 calls:

4.0ms
y
4.0ms
x
4.0ms
z
Results
ErrorSegmentsBranch
22.0b1x
22.0b1y
22.0b1z
Compiler

Compiled 17 to 12 computations (29.4% saved)

simplify15.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
069409
179409
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -10000000000000000525047602552044202487044685811081591549158541155118024579889081957863713750804478640437044438328838781769425232353604305756447921847867069828483872009265758037378302337947880900593689532349707999450811190389676408800746527427801424945792587888200568428381156694721963868654594005401600) (*.f64 (+.f64 1 (/.f64 y z)) x) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -8711228593176025/43556142965880123323311949751266331066368) (+.f64 (/.f64 (*.f64 y x) z) x) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) 40000000000000000852816760378175874892050314850718597870973353984) (fma.f64 x (/.f64 y z) x) (*.f64 (/.f64 x z) (+.f64 y z)))))
(if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -10000000000000000525047602552044202487044685811081591549158541155118024579889081957863713750804478640437044438328838781769425232353604305756447921847867069828483872009265758037378302337947880900593689532349707999450811190389676408800746527427801424945792587888200568428381156694721963868654594005401600) (*.f64 (+.f64 1 (/.f64 y z)) x) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -8711228593176025/43556142965880123323311949751266331066368) (+.f64 (/.f64 (*.f64 y x) z) x) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) 9999999999999999438119489974413630815797154428513196965888) (*.f64 (+.f64 1 (/.f64 y z)) x) (*.f64 (/.f64 x z) (+.f64 y z)))))
(if (<=.f64 x -9999999999999999833591802231917217145603722750174705363670076144604684175010125545314778769459387417512373883443631050675345073481645737334655103703260856320) (+.f64 (/.f64 (*.f64 y x) z) x) (if (<=.f64 x -1631241113302470071104411218739200) (*.f64 (/.f64 x z) (+.f64 y z)) (+.f64 (/.f64 (*.f64 y x) z) x)))
(+.f64 (/.f64 (*.f64 y x) z) x)
(if (<=.f64 y -140000000000000003955827271296980907994197422142849935623185407275362728302087109738658107494615904552256018306646732630469138871435195365105217440238909601639361911849060574798729150657121894404931043728563982197186036236288) (/.f64 (*.f64 y x) z) (if (<=.f64 y 12585843413552300) x (if (<=.f64 y 400000000000000000766270034293867494486382050906076804461121405839751729681595502384494458043272129413120) (/.f64 x (/.f64 z y)) (if (<=.f64 y 4800000000000000185323172579613669133411298471584821069812343819291714768791651648169474804218072176490676043337431441458783709897762008423512006273934270355234885730304) x (/.f64 (*.f64 y x) z)))))
(if (<=.f64 y -2599999999999999853975574447631991096295236794146657574631321054860482204790172271344614611190103212491657117955647147606016) (*.f64 y (/.f64 x z)) (if (<=.f64 y 12585843413552300) x (if (<=.f64 y 400000000000000000766270034293867494486382050906076804461121405839751729681595502384494458043272129413120) (/.f64 x (/.f64 z y)) (if (<=.f64 y 4800000000000000185323172579613669133411298471584821069812343819291714768791651648169474804218072176490676043337431441458783709897762008423512006273934270355234885730304) x (*.f64 y (/.f64 x z))))))
(if (<=.f64 y -2599999999999999853975574447631991096295236794146657574631321054860482204790172271344614611190103212491657117955647147606016) (/.f64 y (/.f64 z x)) (if (<=.f64 y 12585843413552300) x (if (<=.f64 y 400000000000000000766270034293867494486382050906076804461121405839751729681595502384494458043272129413120) (/.f64 x (/.f64 z y)) (if (<=.f64 y 4800000000000000185323172579613669133411298471584821069812343819291714768791651648169474804218072176490676043337431441458783709897762008423512006273934270355234885730304) x (/.f64 y (/.f64 z x))))))
(if (<=.f64 y -2599999999999999853975574447631991096295236794146657574631321054860482204790172271344614611190103212491657117955647147606016) (/.f64 x (/.f64 z y)) (if (<=.f64 y 12585843413552300) x (if (<=.f64 y 400000000000000000766270034293867494486382050906076804461121405839751729681595502384494458043272129413120) (/.f64 x (/.f64 z y)) (if (<=.f64 y 4800000000000000185323172579613669133411298471584821069812343819291714768791651648169474804218072176490676043337431441458783709897762008423512006273934270355234885730304) x (/.f64 x (/.f64 z y))))))
x
Outputs
(if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -10000000000000000525047602552044202487044685811081591549158541155118024579889081957863713750804478640437044438328838781769425232353604305756447921847867069828483872009265758037378302337947880900593689532349707999450811190389676408800746527427801424945792587888200568428381156694721963868654594005401600) (*.f64 (+.f64 1 (/.f64 y z)) x) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -8711228593176025/43556142965880123323311949751266331066368) (+.f64 (/.f64 (*.f64 y x) z) x) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) 40000000000000000852816760378175874892050314850718597870973353984) (fma.f64 x (/.f64 y z) x) (*.f64 (/.f64 x z) (+.f64 y z)))))
(if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -10000000000000000525047602552044202487044685811081591549158541155118024579889081957863713750804478640437044438328838781769425232353604305756447921847867069828483872009265758037378302337947880900593689532349707999450811190389676408800746527427801424945792587888200568428381156694721963868654594005401600) (*.f64 x (+.f64 1 (/.f64 y z))) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -8711228593176025/43556142965880123323311949751266331066368) (+.f64 x (/.f64 (*.f64 x y) z)) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) 40000000000000000852816760378175874892050314850718597870973353984) (fma.f64 x (/.f64 y z) x) (*.f64 (+.f64 y z) (/.f64 x z)))))
(if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -10000000000000000525047602552044202487044685811081591549158541155118024579889081957863713750804478640437044438328838781769425232353604305756447921847867069828483872009265758037378302337947880900593689532349707999450811190389676408800746527427801424945792587888200568428381156694721963868654594005401600) (*.f64 (+.f64 1 (/.f64 y z)) x) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -8711228593176025/43556142965880123323311949751266331066368) (+.f64 (/.f64 (*.f64 y x) z) x) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) 9999999999999999438119489974413630815797154428513196965888) (*.f64 (+.f64 1 (/.f64 y z)) x) (*.f64 (/.f64 x z) (+.f64 y z)))))
(if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -10000000000000000525047602552044202487044685811081591549158541155118024579889081957863713750804478640437044438328838781769425232353604305756447921847867069828483872009265758037378302337947880900593689532349707999450811190389676408800746527427801424945792587888200568428381156694721963868654594005401600) (*.f64 x (+.f64 1 (/.f64 y z))) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) -8711228593176025/43556142965880123323311949751266331066368) (+.f64 x (/.f64 (*.f64 x y) z)) (if (<=.f64 (/.f64 (*.f64 x (+.f64 y z)) z) 9999999999999999438119489974413630815797154428513196965888) (*.f64 x (+.f64 1 (/.f64 y z))) (*.f64 (+.f64 y z) (/.f64 x z)))))
(if (<=.f64 x -9999999999999999833591802231917217145603722750174705363670076144604684175010125545314778769459387417512373883443631050675345073481645737334655103703260856320) (+.f64 (/.f64 (*.f64 y x) z) x) (if (<=.f64 x -1631241113302470071104411218739200) (*.f64 (/.f64 x z) (+.f64 y z)) (+.f64 (/.f64 (*.f64 y x) z) x)))
(if (<=.f64 x -9999999999999999833591802231917217145603722750174705363670076144604684175010125545314778769459387417512373883443631050675345073481645737334655103703260856320) (+.f64 x (/.f64 (*.f64 x y) z)) (if (<=.f64 x -1631241113302470071104411218739200) (*.f64 (+.f64 y z) (/.f64 x z)) (+.f64 x (/.f64 (*.f64 x y) z))))
(+.f64 (/.f64 (*.f64 y x) z) x)
(+.f64 x (/.f64 (*.f64 x y) z))
(if (<=.f64 y -140000000000000003955827271296980907994197422142849935623185407275362728302087109738658107494615904552256018306646732630469138871435195365105217440238909601639361911849060574798729150657121894404931043728563982197186036236288) (/.f64 (*.f64 y x) z) (if (<=.f64 y 12585843413552300) x (if (<=.f64 y 400000000000000000766270034293867494486382050906076804461121405839751729681595502384494458043272129413120) (/.f64 x (/.f64 z y)) (if (<=.f64 y 4800000000000000185323172579613669133411298471584821069812343819291714768791651648169474804218072176490676043337431441458783709897762008423512006273934270355234885730304) x (/.f64 (*.f64 y x) z)))))
(if (<=.f64 y -140000000000000003955827271296980907994197422142849935623185407275362728302087109738658107494615904552256018306646732630469138871435195365105217440238909601639361911849060574798729150657121894404931043728563982197186036236288) (/.f64 (*.f64 x y) z) (if (<=.f64 y 12585843413552300) x (if (<=.f64 y 400000000000000000766270034293867494486382050906076804461121405839751729681595502384494458043272129413120) (/.f64 x (/.f64 z y)) (if (<=.f64 y 4800000000000000185323172579613669133411298471584821069812343819291714768791651648169474804218072176490676043337431441458783709897762008423512006273934270355234885730304) x (/.f64 (*.f64 x y) z)))))
(if (<=.f64 y -2599999999999999853975574447631991096295236794146657574631321054860482204790172271344614611190103212491657117955647147606016) (*.f64 y (/.f64 x z)) (if (<=.f64 y 12585843413552300) x (if (<=.f64 y 400000000000000000766270034293867494486382050906076804461121405839751729681595502384494458043272129413120) (/.f64 x (/.f64 z y)) (if (<=.f64 y 4800000000000000185323172579613669133411298471584821069812343819291714768791651648169474804218072176490676043337431441458783709897762008423512006273934270355234885730304) x (*.f64 y (/.f64 x z))))))
(if (<=.f64 y -2599999999999999853975574447631991096295236794146657574631321054860482204790172271344614611190103212491657117955647147606016) (/.f64 y (/.f64 z x)) (if (<=.f64 y 12585843413552300) x (if (<=.f64 y 400000000000000000766270034293867494486382050906076804461121405839751729681595502384494458043272129413120) (/.f64 x (/.f64 z y)) (if (<=.f64 y 4800000000000000185323172579613669133411298471584821069812343819291714768791651648169474804218072176490676043337431441458783709897762008423512006273934270355234885730304) x (/.f64 y (/.f64 z x))))))
(if (<=.f64 y -2599999999999999853975574447631991096295236794146657574631321054860482204790172271344614611190103212491657117955647147606016) (/.f64 x (/.f64 z y)) (if (<=.f64 y 12585843413552300) x (if (<=.f64 y 400000000000000000766270034293867494486382050906076804461121405839751729681595502384494458043272129413120) (/.f64 x (/.f64 z y)) (if (<=.f64 y 4800000000000000185323172579613669133411298471584821069812343819291714768791651648169474804218072176490676043337431441458783709897762008423512006273934270355234885730304) x (/.f64 x (/.f64 z y))))))
x
Compiler

Compiled 311 to 150 computations (51.8% saved)

soundness441.0ms (5.9%)

Algorithm
egg-herbie
Rules
772×associate-/l*_binary64
772×associate-/l*_binary64
727×associate-/l/_binary64
727×associate-/l/_binary64
666×fma-def_binary64
Iterations

Useful iterations: 6 (0.0ms)

IterNodesCost
0710
11710
22810
34110
45010
55610
6608
7758
82578
911908
1014508
1115878
1216008
1316058
1416108
1561338
1668398
1771548
1874438
1976428
2078948
0710
11710
22810
34110
45010
55610
6608
7758
82578
911908
1014508
1115878
1216008
1316058
1416108
1561338
1668398
1771548
1874438
1976428
2078948
Stop Event
node limit
node limit
Compiler

Compiled 198 to 116 computations (41.4% saved)

end89.0ms (1.2%)

Compiler

Compiled 287 to 99 computations (65.5% saved)

Profiling

Loading profile data...