Details

Time bar (total: 5.1s)

analyze402.0ms (7.9%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.7%0.3%0
0%99.7%0.3%1
0%99.7%0.3%2
0%99.7%0.3%3
0%99.7%0.3%4
0%99.7%0.3%5
0%99.7%0.3%6
0%99.7%0.3%7
0%99.7%0.3%8
0%99.7%0.3%9
0%99.7%0.3%10
0%99.7%0.3%11
0%99.7%0.3%12
Compiler

Compiled 18 to 12 computations (33.3% saved)

sample1.7s (33.8%)

Results
1.1s8256×body256valid
561.0ms4080×body256invalid

preprocess26.0ms (0.5%)

Algorithm
egg-herbie
Rules
135×fma-def_binary64
45×+-commutative_binary64
24×associate-+l+_binary64
15×*-commutative_binary64
15×associate-+r+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
062224
1143192
2266192
3300192
066
166
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
2
3
4
5
Outputs
0
1
0
2
3
2
4
5
4
Call 2
Inputs
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
(+.f64 (+.f64 (*.f64 y x) (*.f64 z t)) (*.f64 a b))
(+.f64 (+.f64 (*.f64 z y) (*.f64 x t)) (*.f64 a b))
(+.f64 (+.f64 (*.f64 t y) (*.f64 z x)) (*.f64 a b))
(+.f64 (+.f64 (*.f64 a y) (*.f64 z t)) (*.f64 x b))
(+.f64 (+.f64 (*.f64 b y) (*.f64 z t)) (*.f64 a x))
(+.f64 (+.f64 (*.f64 x z) (*.f64 y t)) (*.f64 a b))
(+.f64 (+.f64 (*.f64 x t) (*.f64 z y)) (*.f64 a b))
(+.f64 (+.f64 (*.f64 x a) (*.f64 z t)) (*.f64 y b))
(+.f64 (+.f64 (*.f64 x b) (*.f64 z t)) (*.f64 a y))
(+.f64 (+.f64 (*.f64 x y) (*.f64 t z)) (*.f64 a b))
(+.f64 (+.f64 (*.f64 x y) (*.f64 a t)) (*.f64 z b))
(+.f64 (+.f64 (*.f64 x y) (*.f64 b t)) (*.f64 a z))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z a)) (*.f64 t b))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z b)) (*.f64 a t))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 b a))
Outputs
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
(+.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b))
(fma.f64 x y (fma.f64 z t (*.f64 a b)))
(+.f64 (+.f64 (*.f64 y x) (*.f64 z t)) (*.f64 a b))
(+.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b))
(fma.f64 x y (fma.f64 z t (*.f64 a b)))
(+.f64 (+.f64 (*.f64 z y) (*.f64 x t)) (*.f64 a b))
(+.f64 (*.f64 a b) (fma.f64 x t (*.f64 y z)))
(fma.f64 x t (fma.f64 y z (*.f64 a b)))
(+.f64 (+.f64 (*.f64 t y) (*.f64 z x)) (*.f64 a b))
(+.f64 (*.f64 a b) (fma.f64 x z (*.f64 y t)))
(fma.f64 y t (fma.f64 x z (*.f64 a b)))
(+.f64 (+.f64 (*.f64 a y) (*.f64 z t)) (*.f64 x b))
(+.f64 (*.f64 y a) (fma.f64 x b (*.f64 z t)))
(fma.f64 x b (fma.f64 z t (*.f64 y a)))
(+.f64 (+.f64 (*.f64 b y) (*.f64 z t)) (*.f64 a x))
(+.f64 (*.f64 y b) (fma.f64 x a (*.f64 z t)))
(fma.f64 y b (fma.f64 x a (*.f64 z t)))
(+.f64 (+.f64 (*.f64 x z) (*.f64 y t)) (*.f64 a b))
(+.f64 (*.f64 a b) (fma.f64 x z (*.f64 y t)))
(fma.f64 y t (fma.f64 x z (*.f64 a b)))
(+.f64 (+.f64 (*.f64 x t) (*.f64 z y)) (*.f64 a b))
(+.f64 (*.f64 a b) (fma.f64 x t (*.f64 y z)))
(fma.f64 x t (fma.f64 y z (*.f64 a b)))
(+.f64 (+.f64 (*.f64 x a) (*.f64 z t)) (*.f64 y b))
(+.f64 (*.f64 y b) (fma.f64 x a (*.f64 z t)))
(fma.f64 y b (fma.f64 x a (*.f64 z t)))
(+.f64 (+.f64 (*.f64 x b) (*.f64 z t)) (*.f64 a y))
(+.f64 (*.f64 y a) (fma.f64 x b (*.f64 z t)))
(fma.f64 x b (fma.f64 z t (*.f64 y a)))
(+.f64 (+.f64 (*.f64 x y) (*.f64 t z)) (*.f64 a b))
(+.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b))
(fma.f64 x y (fma.f64 z t (*.f64 a b)))
(+.f64 (+.f64 (*.f64 x y) (*.f64 a t)) (*.f64 z b))
(+.f64 (fma.f64 x y (*.f64 t a)) (*.f64 z b))
(fma.f64 x y (fma.f64 t a (*.f64 z b)))
(+.f64 (+.f64 (*.f64 x y) (*.f64 b t)) (*.f64 a z))
(+.f64 (fma.f64 x y (*.f64 t b)) (*.f64 z a))
(fma.f64 z a (fma.f64 x y (*.f64 t b)))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z a)) (*.f64 t b))
(+.f64 (fma.f64 x y (*.f64 t b)) (*.f64 z a))
(fma.f64 z a (fma.f64 x y (*.f64 t b)))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z b)) (*.f64 a t))
(+.f64 (fma.f64 x y (*.f64 t a)) (*.f64 z b))
(fma.f64 x y (fma.f64 t a (*.f64 z b)))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 b a))
(+.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b))
(fma.f64 x y (fma.f64 z t (*.f64 a b)))
Symmetry

(sort x y)

(sort z t)

(sort a b)

Compiler

Compiled 23 to 17 computations (26.1% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
18×fma-def_binary64
+-commutative_binary64
*-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01214
12012
23612
34612
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
Outputs
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
(+.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b))
(fma.f64 a b (fma.f64 x y (*.f64 z t)))
(fma.f64 x y (fma.f64 a b (*.f64 z t)))

eval1.0ms (0%)

Compiler

Compiled 26 to 13 computations (50% saved)

prune2.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
0.0b
(fma.f64 x y (fma.f64 a b (*.f64 z t)))
0.0b
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
Compiler

Compiled 32 to 20 computations (37.5% saved)

localize13.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 39 to 11 computations (71.8% saved)

series14.0ms (0.3%)

Counts
2 → 120
Calls

30 calls:

TimeVariablePointExpression
2.0ms
t
@0
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
1.0ms
a
@inf
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
1.0ms
x
@0
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
1.0ms
y
@-inf
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
1.0ms
x
@inf
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))

rewrite80.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
736×fma-def_binary64
681×log-prod_binary64
358×pow2_binary64
338×fma-neg_binary64
245×pow1/3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01222
125820
2365620
Stop Event
node limit
Counts
2 → 183
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
(+.f64 (*.f64 x y) (*.f64 z t))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 2) (-.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b))) (/.f64 (pow.f64 (*.f64 a b) 2) (-.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x y (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) (pow.f64 (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 2) (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) (sqrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 3) (pow.f64 (*.f64 a b) 3)) (/.f64 1 (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (fma.f64 x y (*.f64 z t))) (pow.f64 (fma.f64 x y (*.f64 z t)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 2) (pow.f64 (*.f64 a b) 2)) (/.f64 1 (-.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (fma.f64 x y (*.f64 z t))) (pow.f64 (fma.f64 x y (*.f64 z t)) 2)) (+.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 3) (pow.f64 (*.f64 a b) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b)) (-.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 2) (pow.f64 (*.f64 a b) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 3) (pow.f64 (*.f64 a b) 3)) (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (fma.f64 x y (*.f64 z t))) (pow.f64 (fma.f64 x y (*.f64 z t)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 3) (pow.f64 (*.f64 a b) 3)) (+.f64 (pow.f64 (*.f64 a b) 2) (-.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 2) (*.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 2) (pow.f64 (*.f64 a b) 2)) (-.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 3) (pow.f64 (*.f64 a b) 3))) (neg.f64 (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (fma.f64 x y (*.f64 z t))) (pow.f64 (fma.f64 x y (*.f64 z t)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 2) (pow.f64 (*.f64 a b) 2))) (neg.f64 (-.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (fma.f64 a b (*.f64 z t)) 3)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (pow.f64 (fma.f64 a b (*.f64 z t)) 2) (*.f64 (*.f64 x y) (fma.f64 a b (*.f64 z t))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (fma.f64 a b (*.f64 z t)) 2)) (-.f64 (*.f64 x y) (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (fma.f64 x y (*.f64 z t)) 2)) (-.f64 (*.f64 a b) (fma.f64 x y (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (fma.f64 x y (*.f64 z t))) (pow.f64 (fma.f64 x y (*.f64 z t)) 2)) (+.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 3) (pow.f64 (*.f64 a b) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (fma.f64 x y (*.f64 z t)) (*.f64 a b)) (-.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 2) (pow.f64 (*.f64 a b) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x y))) (exp.f64 (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 x) y) (*.f64 (pow.f64 (exp.f64 z) t) (pow.f64 (exp.f64 a) b))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x y))) (*.f64 (pow.f64 (exp.f64 z) t) (pow.f64 (exp.f64 a) b))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 z t)))) (pow.f64 (exp.f64 a) b)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 x y (*.f64 z t))) (+.f64 1 (expm1.f64 (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 z t)))) (+.f64 1 (expm1.f64 (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 a b))) (exp.f64 (fma.f64 x y (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 a) b) (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 z t))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 a b))) (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 z t))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 a b (*.f64 z t))) (pow.f64 (exp.f64 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (exp.f64 z) t) (pow.f64 (exp.f64 a) b)) (pow.f64 (exp.f64 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 a b (*.f64 z t))) (+.f64 1 (expm1.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (exp.f64 z) t) (pow.f64 (exp.f64 a) b)) (+.f64 1 (expm1.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x y) 1 (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x y) 1 (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z t (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 t z (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z t) 1 (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 x y (*.f64 z t)) 1 (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 a b (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 b a (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 a b) 1 (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 z t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 x y (*.f64 z t)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 a b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 a b (*.f64 z t)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 a b)) (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (cbrt.f64 (*.f64 a b)) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 x y (*.f64 z t))) (pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 z t))) 2) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 z t))) 2) (cbrt.f64 (fma.f64 x y (*.f64 z t))) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 a) 2) (*.f64 (cbrt.f64 a) b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 t) 2) (*.f64 (cbrt.f64 t) z) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 b) 2) (*.f64 (cbrt.f64 b) a) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 z t)) (pow.f64 (cbrt.f64 (*.f64 z t)) 2) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 z t)) 2) (cbrt.f64 (*.f64 z t)) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 a b)) (sqrt.f64 (*.f64 a b)) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 x y (*.f64 z t))) (sqrt.f64 (fma.f64 x y (*.f64 z t))) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 a) (*.f64 (sqrt.f64 a) b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 t) (*.f64 (sqrt.f64 t) z) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 b) (*.f64 (sqrt.f64 b) a) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 z t)) (sqrt.f64 (*.f64 z t)) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 z t) 3)) (/.f64 1 (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (*.f64 x y)) (pow.f64 (*.f64 x y) 2))) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 z t) 2)) (/.f64 1 (-.f64 (*.f64 x y) (*.f64 z t))) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 z t))) 2) (cbrt.f64 (fma.f64 a b (*.f64 z t))) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 a b (*.f64 z t))) (sqrt.f64 (fma.f64 a b (*.f64 z t))) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (fma.f64 a b (*.f64 z t)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 a (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 a (sqrt.f64 b)) (sqrt.f64 b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 b (pow.f64 (cbrt.f64 a) 2)) (cbrt.f64 a) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 b (sqrt.f64 a)) (sqrt.f64 a) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (pow.f64 (cbrt.f64 t) 2)) (cbrt.f64 t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (sqrt.f64 t)) (sqrt.f64 t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 t (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 t (sqrt.f64 z)) (sqrt.f64 z) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x y (*.f64 z t)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (*.f64 x y) (*.f64 z t))) (/.f64 (pow.f64 (*.f64 z t) 2) (-.f64 (*.f64 x y) (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x y (*.f64 z t)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x y (*.f64 z t))) (pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 z t))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 z t))) 2) (cbrt.f64 (fma.f64 x y (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x y (*.f64 z t))) (sqrt.f64 (fma.f64 x y (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 z t) 3)) (/.f64 1 (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (*.f64 x y)) (pow.f64 (*.f64 x y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 z t) 2)) (/.f64 1 (-.f64 (*.f64 x y) (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (*.f64 x y)) (pow.f64 (*.f64 x y) 2)) (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 z t) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 x y) (*.f64 z t)) (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 z t) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 z t) 3)) (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (*.f64 x y)) (pow.f64 (*.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 z t) 3)) (+.f64 (pow.f64 (*.f64 z t) 2) (-.f64 (pow.f64 (*.f64 x y) 2) (*.f64 x (*.f64 y (*.f64 z t))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 z t) 2)) (-.f64 (*.f64 x y) (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 z t) 3))) (neg.f64 (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (*.f64 x y)) (pow.f64 (*.f64 x y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 z t) 2))) (neg.f64 (-.f64 (*.f64 x y) (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z t) 2) (pow.f64 (*.f64 x y) 2)) (-.f64 (*.f64 z t) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x y (*.f64 z t)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 z t))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x y (*.f64 z t))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (*.f64 x y)) (pow.f64 (*.f64 x y) 2)) (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 z t) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (*.f64 x y) (*.f64 z t)) (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 z t) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x y (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x y))) (pow.f64 (exp.f64 z) t)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 x) y) (+.f64 1 (expm1.f64 (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x y))) (+.f64 1 (expm1.f64 (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 z t))) (pow.f64 (exp.f64 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 z) t) (+.f64 1 (expm1.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 z t))) (+.f64 1 (expm1.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x y (*.f64 z t)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x y (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x y (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x y (*.f64 z t))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x y) 1 (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z t (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 t z (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z t) 1 (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 z t) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) t) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 t) 2) (*.f64 (cbrt.f64 t) 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 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 z t)) (pow.f64 (cbrt.f64 (*.f64 z t)) 2) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 z t)) 2) (cbrt.f64 (*.f64 z t)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) t) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 t) (*.f64 (sqrt.f64 t) z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 z t)) (sqrt.f64 (*.f64 z t)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (pow.f64 (cbrt.f64 t) 2)) (cbrt.f64 t) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (sqrt.f64 t)) (sqrt.f64 t) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 t (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 t (sqrt.f64 z)) (sqrt.f64 z) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x y (*.f64 z t))))))))

simplify29.0ms (0.6%)

Algorithm
egg-herbie
Rules
18×fma-def_binary64
+-commutative_binary64
*-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0141080
1261080
2391080
3431080
Stop Event
saturated
Counts
303 → 194
Calls
Call 1
Inputs
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
Outputs
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 y x)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))

localize10.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 a b (*.f64 z t))
0.0b
(fma.f64 x y (fma.f64 a b (*.f64 z t)))
0.0b
(fma.f64 x y (fma.f64 a b (*.f64 z t)))
0.0b
(fma.f64 a b (*.f64 z t))
Compiler

Compiled 30 to 9 computations (70% saved)

series12.0ms (0.2%)

Counts
2 → 120
Calls

30 calls:

TimeVariablePointExpression
2.0ms
y
@inf
(fma.f64 x y (fma.f64 a b (*.f64 z t)))
0.0ms
a
@inf
(fma.f64 a b (*.f64 z t))
0.0ms
a
@-inf
(fma.f64 a b (*.f64 z t))
0.0ms
y
@-inf
(fma.f64 x y (fma.f64 a b (*.f64 z t)))
0.0ms
b
@-inf
(fma.f64 a b (*.f64 z t))

rewrite61.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
956×pow1_binary64
869×add-log-exp_binary64
869×log1p-expm1-u_binary64
869×expm1-log1p-u_binary64
847×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
119620
2233220
Stop Event
node limit
Counts
2 → 43
Calls
Call 1
Inputs
(fma.f64 a b (*.f64 z t))
(fma.f64 x y (fma.f64 a b (*.f64 z t)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z t) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a b) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 a b) 1) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 a b (*.f64 z t))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 a b (*.f64 z t)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 a b (*.f64 z t))) (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 z t))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 z t))) 2) (cbrt.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 a b (*.f64 z t))) (sqrt.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 z t) 3)) (+.f64 (*.f64 (*.f64 a b) (*.f64 a b)) (-.f64 (pow.f64 (*.f64 z t) 2) (*.f64 (*.f64 a b) (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 a b) (*.f64 a b)) (pow.f64 (*.f64 z t) 2)) (-.f64 (*.f64 a b) (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 a b (*.f64 z t)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 a b (*.f64 z t)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 z t))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 a b (*.f64 z t))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 a b (*.f64 z t)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 a b (*.f64 z t)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 a b (*.f64 z t))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 a b (*.f64 z t)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x y) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x y) 1) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 x y) (*.f64 a b)) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x y (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) (pow.f64 (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 2) (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) (sqrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (fma.f64 a b (*.f64 z t)) 3)) (+.f64 (*.f64 (*.f64 x y) (*.f64 x y)) (-.f64 (pow.f64 (fma.f64 a b (*.f64 z t)) 2) (*.f64 (*.f64 x y) (fma.f64 a b (*.f64 z t))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x y) (*.f64 x y)) (pow.f64 (fma.f64 a b (*.f64 z t)) 2)) (-.f64 (*.f64 x y) (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x y (fma.f64 a b (*.f64 z t)))))))))

simplify30.0ms (0.6%)

Algorithm
egg-herbie
Rules
18×fma-def_binary64
+-commutative_binary64
*-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0141080
1261080
2391080
3431080
Stop Event
saturated
Counts
163 → 54
Calls
Call 1
Inputs
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
Outputs
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))

eval51.0ms (1%)

Compiler

Compiled 3907 to 956 computations (75.5% saved)

prune56.0ms (1.1%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New2399248
Fresh000
Picked101
Done101
Total2419250
Error
0b
Counts
250 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
39.8b
(*.f64 a b)
0.0b
(+.f64 (+.f64 (*.f64 x y) (*.f64 a b)) (*.f64 z t))
16.5b
(fma.f64 a b (*.f64 t z))
16.5b
(+.f64 (*.f64 a b) (*.f64 t z))
24.0b
(+.f64 (*.f64 a b) (*.f64 y x))
0.0b
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
23.8b
(+.f64 (*.f64 y x) (*.f64 t z))
39.4b
(*.f64 t z)
47.2b
(*.f64 y x)
Compiler

Compiled 220 to 152 computations (30.9% saved)

localize11.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
0.0b
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
Compiler

Compiled 30 to 9 computations (70% saved)

series7.0ms (0.1%)

Counts
1 → 72
Calls

18 calls:

TimeVariablePointExpression
1.0ms
z
@-inf
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
0.0ms
z
@inf
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
0.0ms
t
@inf
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
0.0ms
t
@-inf
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
0.0ms
t
@0
(fma.f64 t z (fma.f64 y x (*.f64 a b)))

rewrite64.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
956×pow1_binary64
869×add-log-exp_binary64
869×log1p-expm1-u_binary64
869×expm1-log1p-u_binary64
847×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01012
119612
2233212
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 y x (*.f64 a b)) (*.f64 t z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 t z) (fma.f64 y x (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 t z) 1) (fma.f64 y x (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 t z) (*.f64 y x)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 t z (fma.f64 y x (*.f64 a b)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 t z (fma.f64 y x (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))) (pow.f64 (cbrt.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))) 2) (cbrt.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))) (sqrt.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 t z) 3) (pow.f64 (fma.f64 y x (*.f64 a b)) 3)) (+.f64 (*.f64 (*.f64 t z) (*.f64 t z)) (-.f64 (pow.f64 (fma.f64 y x (*.f64 a b)) 2) (*.f64 (*.f64 t z) (fma.f64 y x (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 t z) (*.f64 t z)) (pow.f64 (fma.f64 y x (*.f64 a b)) 2)) (-.f64 (*.f64 t z) (fma.f64 y x (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 t z (fma.f64 y x (*.f64 a b)))))))))

simplify34.0ms (0.7%)

Algorithm
egg-herbie
Rules
18×fma-def_binary64
+-commutative_binary64
*-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
014744
126744
239744
343744
Stop Event
saturated
Counts
94 → 33
Calls
Call 1
Inputs
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
Outputs
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(fma.f64 t z (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(fma.f64 t z (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 y x)))

localize8.0ms (0.2%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

localize10.0ms (0.2%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

localize12.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 23 to 9 computations (60.9% saved)

series3.0ms (0.1%)

Counts
1 → 12
Calls

12 calls:

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

rewrite49.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
903×pow1_binary64
833×add-log-exp_binary64
833×log1p-expm1-u_binary64
833×expm1-log1p-u_binary64
814×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
088
11688
222698
Stop Event
node limit
Counts
1 → 37
Calls
Call 1
Inputs
(+.f64 (*.f64 a b) (*.f64 y x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 a b (*.f64 y x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 a b) 2) (-.f64 (*.f64 a b) (*.f64 y x))) (/.f64 (pow.f64 (*.f64 y x) 2) (-.f64 (*.f64 a b) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 a b (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 a b (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 a b (*.f64 y x))) (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 y x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 y x))) 2) (cbrt.f64 (fma.f64 a b (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 a b (*.f64 y x))) (sqrt.f64 (fma.f64 a b (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 y x) 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 y x) (-.f64 (*.f64 y x) (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 y x) 2)) (/.f64 1 (-.f64 (*.f64 a b) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 y x) (-.f64 (*.f64 y x) (*.f64 a b)))) (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 y x) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 a b) (*.f64 y x)) (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 y x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 y x) 3)) (+.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 y x) (-.f64 (*.f64 y x) (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 y x) 3)) (+.f64 (pow.f64 (*.f64 y x) 2) (-.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 a b) (*.f64 y x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 y x) 2)) (-.f64 (*.f64 a b) (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 y x) 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 y x) (-.f64 (*.f64 y x) (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 y x) 2))) (neg.f64 (-.f64 (*.f64 a b) (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 y x) 2) (pow.f64 (*.f64 a b) 2)) (-.f64 (*.f64 y x) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 a b (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 a b (*.f64 y x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 y x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 a b (*.f64 y x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 a b (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 a b (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 a b (*.f64 y x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 a b (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 a b (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 a b (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 b a (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 a b) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 y x) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 y x)) 2) (cbrt.f64 (*.f64 y x)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (cbrt.f64 (*.f64 a b)) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 y x)) (sqrt.f64 (*.f64 y x)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 a b)) (sqrt.f64 (*.f64 a b)) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 a b (*.f64 y x))))))))

simplify9.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0748
1948
Stop Event
saturated
Counts
49 → 39
Calls
Call 1
Inputs
(*.f64 y x)
(*.f64 a b)
(*.f64 a b)
(*.f64 y x)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 y x)
(*.f64 y x)
(*.f64 a b)
(*.f64 y x)
(*.f64 y x)
Outputs
(*.f64 y x)
(*.f64 a b)
(*.f64 a b)
(*.f64 y x)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 y x)
(*.f64 y x)
(*.f64 a b)
(*.f64 y x)
(*.f64 y x)

localize13.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 39 to 11 computations (71.8% saved)

series10.0ms (0.2%)

Counts
2 → 120
Calls

30 calls:

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

rewrite71.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
736×fma-def_binary64
681×log-prod_binary64
358×pow2_binary64
338×fma-neg_binary64
245×pow1/3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01222
125820
2365620
Stop Event
node limit
Counts
2 → 183
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x y) (*.f64 a b)) (*.f64 z t))
(+.f64 (*.f64 x y) (*.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 2) (-.f64 (fma.f64 x y (*.f64 a b)) (*.f64 z t))) (/.f64 (pow.f64 (*.f64 z t) 2) (-.f64 (fma.f64 x y (*.f64 a b)) (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x y (fma.f64 z t (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))) (pow.f64 (cbrt.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))) 2) (cbrt.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))) (sqrt.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 3) (pow.f64 (*.f64 z t) 3)) (/.f64 1 (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (fma.f64 x y (*.f64 a b))) (pow.f64 (fma.f64 x y (*.f64 a b)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 2) (pow.f64 (*.f64 z t) 2)) (/.f64 1 (-.f64 (fma.f64 x y (*.f64 a b)) (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (fma.f64 x y (*.f64 a b))) (pow.f64 (fma.f64 x y (*.f64 a b)) 2)) (+.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 3) (pow.f64 (*.f64 z t) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (fma.f64 x y (*.f64 a b)) (*.f64 z t)) (-.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 2) (pow.f64 (*.f64 z t) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 3) (pow.f64 (*.f64 z t) 3)) (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (fma.f64 x y (*.f64 a b))) (pow.f64 (fma.f64 x y (*.f64 a b)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 3) (pow.f64 (*.f64 z t) 3)) (+.f64 (pow.f64 (*.f64 z t) 2) (-.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 2) (*.f64 (fma.f64 x y (*.f64 a b)) (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 2) (pow.f64 (*.f64 z t) 2)) (-.f64 (fma.f64 x y (*.f64 a b)) (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 3) (pow.f64 (*.f64 z t) 3))) (neg.f64 (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (fma.f64 x y (*.f64 a b))) (pow.f64 (fma.f64 x y (*.f64 a b)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 2) (pow.f64 (*.f64 z t) 2))) (neg.f64 (-.f64 (fma.f64 x y (*.f64 a b)) (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (fma.f64 z t (*.f64 a b)) 3)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (pow.f64 (fma.f64 z t (*.f64 a b)) 2) (*.f64 (*.f64 x y) (fma.f64 z t (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (fma.f64 z t (*.f64 a b)) 2)) (-.f64 (*.f64 x y) (fma.f64 z t (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 z t) 2) (pow.f64 (fma.f64 x y (*.f64 a b)) 2)) (-.f64 (*.f64 z t) (fma.f64 x y (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 z t) (-.f64 (*.f64 z t) (fma.f64 x y (*.f64 a b))) (pow.f64 (fma.f64 x y (*.f64 a b)) 2)) (+.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 3) (pow.f64 (*.f64 z t) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (fma.f64 x y (*.f64 a b)) (*.f64 z t)) (-.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 2) (pow.f64 (*.f64 z t) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x y))) (exp.f64 (fma.f64 z t (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 x) y) (*.f64 (pow.f64 (exp.f64 a) b) (pow.f64 (exp.f64 z) t))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x y))) (*.f64 (pow.f64 (exp.f64 a) b) (pow.f64 (exp.f64 z) t))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 a b)))) (pow.f64 (exp.f64 z) t)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 x y (*.f64 a b))) (+.f64 1 (expm1.f64 (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 a b)))) (+.f64 1 (expm1.f64 (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 z t))) (exp.f64 (fma.f64 x y (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 z) t) (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 z t))) (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 z t (*.f64 a b))) (pow.f64 (exp.f64 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (exp.f64 a) b) (pow.f64 (exp.f64 z) t)) (pow.f64 (exp.f64 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (fma.f64 z t (*.f64 a b))) (+.f64 1 (expm1.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (*.f64 (pow.f64 (exp.f64 a) b) (pow.f64 (exp.f64 z) t)) (+.f64 1 (expm1.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x y) 1 (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x y) 1 (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 a b (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 b a (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 a b) 1 (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 x y (*.f64 a b)) 1 (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z t (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 t z (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z t) 1 (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 a b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 x y (*.f64 a b)) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 z t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 z t (*.f64 a b)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 z t)) (pow.f64 (cbrt.f64 (*.f64 z t)) 2) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 z t)) 2) (cbrt.f64 (*.f64 z t)) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 x y (*.f64 a b))) (pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 a b))) 2) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 a b))) 2) (cbrt.f64 (fma.f64 x y (*.f64 a b))) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 a) 2) (*.f64 (cbrt.f64 a) b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) 2) (*.f64 (cbrt.f64 z) t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 b) 2) (*.f64 (cbrt.f64 b) a) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 t) 2) (*.f64 (cbrt.f64 t) z) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 a b)) (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (cbrt.f64 (*.f64 a b)) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 z t)) (sqrt.f64 (*.f64 z t)) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 x y (*.f64 a b))) (sqrt.f64 (fma.f64 x y (*.f64 a b))) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 a) (*.f64 (sqrt.f64 a) b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 z) (*.f64 (sqrt.f64 z) t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 b) (*.f64 (sqrt.f64 b) a) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 t) (*.f64 (sqrt.f64 t) z) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 a b)) (sqrt.f64 (*.f64 a b)) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 a b) 3)) (/.f64 1 (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (*.f64 x y)) (pow.f64 (*.f64 x y) 2))) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 a b) 2)) (/.f64 1 (-.f64 (*.f64 x y) (*.f64 a b))) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (fma.f64 z t (*.f64 a b))) 2) (cbrt.f64 (fma.f64 z t (*.f64 a b))) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 z t (*.f64 a b))) (sqrt.f64 (fma.f64 z t (*.f64 a b))) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (fma.f64 z t (*.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (pow.f64 (cbrt.f64 t) 2)) (cbrt.f64 t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 z (sqrt.f64 t)) (sqrt.f64 t) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 t (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 t (sqrt.f64 z)) (sqrt.f64 z) (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 a (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 a (sqrt.f64 b)) (sqrt.f64 b) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 b (pow.f64 (cbrt.f64 a) 2)) (cbrt.f64 a) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 b (sqrt.f64 a)) (sqrt.f64 a) (fma.f64 x y (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x y (fma.f64 z t (*.f64 a b)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x y (*.f64 a b)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (*.f64 x y) (*.f64 a b))) (/.f64 (pow.f64 (*.f64 a b) 2) (-.f64 (*.f64 x y) (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x y (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x y (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x y (*.f64 a b))) (pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 a b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 a b))) 2) (cbrt.f64 (fma.f64 x y (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x y (*.f64 a b))) (sqrt.f64 (fma.f64 x y (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 a b) 3)) (/.f64 1 (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (*.f64 x y)) (pow.f64 (*.f64 x y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 a b) 2)) (/.f64 1 (-.f64 (*.f64 x y) (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (*.f64 x y)) (pow.f64 (*.f64 x y) 2)) (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 a b) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 x y) (*.f64 a b)) (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 a b) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 a b) 3)) (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (*.f64 x y)) (pow.f64 (*.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 a b) 3)) (+.f64 (pow.f64 (*.f64 a b) 2) (-.f64 (pow.f64 (*.f64 x y) 2) (*.f64 x (*.f64 y (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 a b) 2)) (-.f64 (*.f64 x y) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 a b) 3))) (neg.f64 (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (*.f64 x y)) (pow.f64 (*.f64 x y) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 a b) 2))) (neg.f64 (-.f64 (*.f64 x y) (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 x y) 2)) (-.f64 (*.f64 a b) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x y (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x y (*.f64 a b))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x y (*.f64 a b))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 a b) (-.f64 (*.f64 a b) (*.f64 x y)) (pow.f64 (*.f64 x y) 2)) (+.f64 (pow.f64 (*.f64 x y) 3) (pow.f64 (*.f64 a b) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (*.f64 x y) (*.f64 a b)) (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 a b) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x y (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x y (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x y))) (pow.f64 (exp.f64 a) b)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 x) y) (+.f64 1 (expm1.f64 (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 x y))) (+.f64 1 (expm1.f64 (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 a b))) (pow.f64 (exp.f64 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 a) b) (+.f64 1 (expm1.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 a b))) (+.f64 1 (expm1.f64 (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x y (*.f64 a b)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x y (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x y (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x y (*.f64 a b))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x y (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y x (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x y) 1 (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 a b (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 b a (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 a b) 1 (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x y) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 a b) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 a) 2) (*.f64 (cbrt.f64 a) b) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 b) 2) (*.f64 (cbrt.f64 b) a) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 a b)) (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (cbrt.f64 (*.f64 a b)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 a) (*.f64 (sqrt.f64 a) b) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 b) (*.f64 (sqrt.f64 b) a) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 a b)) (sqrt.f64 (*.f64 a b)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 a (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 b) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 a (sqrt.f64 b)) (sqrt.f64 b) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 b (pow.f64 (cbrt.f64 a) 2)) (cbrt.f64 a) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 b (sqrt.f64 a)) (sqrt.f64 a) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x y (*.f64 a b))))))))

simplify31.0ms (0.6%)

Algorithm
egg-herbie
Rules
18×fma-def_binary64
+-commutative_binary64
*-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0141080
1261080
2391080
3431080
Stop Event
saturated
Counts
303 → 193
Calls
Call 1
Inputs
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
Outputs
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 y x)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 y x) (*.f64 t z))
(fma.f64 y x (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 y x) (*.f64 t z)))
(fma.f64 a b (fma.f64 y x (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(fma.f64 y x (*.f64 a b))

eval53.0ms (1%)

Compiler

Compiled 4124 to 1043 computations (74.7% saved)

prune58.0ms (1.1%)

Pruning

9 alts after pruning (5 fresh and 4 done)

PrunedKeptTotal
New2614265
Fresh314
Picked011
Done134
Total2659274
Error
0b
Counts
274 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
24.0b
(+.f64 (*.f64 a b) (*.f64 y x))
16.5b
(fma.f64 a b (*.f64 t z))
39.8b
(*.f64 a b)
0.0b
(+.f64 (+.f64 (*.f64 x y) (*.f64 a b)) (*.f64 z t))
16.5b
(fma.f64 t z (*.f64 a b))
16.5b
(+.f64 (*.f64 a b) (*.f64 t z))
39.4b
(*.f64 t z)
47.2b
(*.f64 y x)
23.8b
(+.f64 (*.f64 y x) (*.f64 t z))
Compiler

Compiled 166 to 116 computations (30.1% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 t z (*.f64 a b))
0.0b
(fma.f64 t z (*.f64 a b))
Compiler

Compiled 19 to 8 computations (57.9% saved)

series4.0ms (0.1%)

Counts
1 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
t
@0
(fma.f64 t z (*.f64 a b))
0.0ms
t
@inf
(fma.f64 t z (*.f64 a b))
0.0ms
t
@-inf
(fma.f64 t z (*.f64 a b))
0.0ms
z
@0
(fma.f64 t z (*.f64 a b))
0.0ms
b
@-inf
(fma.f64 t z (*.f64 a b))

rewrite45.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
661×pow1_binary64
602×add-log-exp_binary64
602×log1p-expm1-u_binary64
602×expm1-log1p-u_binary64
587×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify13.0ms (0.2%)

Algorithm
egg-herbie
Rules
fma-def_binary64
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08336
112336
215336
Stop Event
saturated
Counts
69 → 24
Calls
Call 1
Inputs
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
Outputs
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))

localize5.0ms (0.1%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

localize8.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 23 to 9 computations (60.9% saved)

series4.0ms (0.1%)

Counts
1 → 12
Calls

12 calls:

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

rewrite47.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
903×pow1_binary64
833×add-log-exp_binary64
833×log1p-expm1-u_binary64
833×expm1-log1p-u_binary64
814×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0748
1948
Stop Event
saturated
Counts
49 → 39
Calls
Call 1
Inputs
(*.f64 t z)
(*.f64 y x)
(*.f64 y x)
(*.f64 t z)
(*.f64 y x)
(*.f64 y x)
(*.f64 y x)
(*.f64 t z)
(*.f64 t z)
(*.f64 y x)
(*.f64 t z)
(*.f64 t z)
Outputs
(*.f64 t z)
(*.f64 y x)
(*.f64 y x)
(*.f64 t z)
(*.f64 y x)
(*.f64 y x)
(*.f64 y x)
(*.f64 t z)
(*.f64 t z)
(*.f64 y x)
(*.f64 t z)
(*.f64 t z)

localize9.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (*.f64 a b) (*.f64 t z))
0.0b
(+.f64 (*.f64 a b) (*.f64 t z))
Compiler

Compiled 23 to 9 computations (60.9% saved)

series3.0ms (0.1%)

Counts
1 → 12
Calls

12 calls:

TimeVariablePointExpression
0.0ms
a
@inf
(+.f64 (*.f64 a b) (*.f64 t z))
0.0ms
a
@0
(+.f64 (*.f64 a b) (*.f64 t z))
0.0ms
b
@0
(+.f64 (*.f64 a b) (*.f64 t z))
0.0ms
a
@-inf
(+.f64 (*.f64 a b) (*.f64 t z))
0.0ms
t
@-inf
(+.f64 (*.f64 a b) (*.f64 t z))

rewrite51.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
903×pow1_binary64
833×add-log-exp_binary64
833×log1p-expm1-u_binary64
833×expm1-log1p-u_binary64
814×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
088
11688
222698
Stop Event
node limit
Counts
1 → 37
Calls
Call 1
Inputs
(+.f64 (*.f64 a b) (*.f64 t z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 a b (*.f64 t z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 a b) 2) (-.f64 (*.f64 a b) (*.f64 t z))) (/.f64 (pow.f64 (*.f64 t z) 2) (-.f64 (*.f64 a b) (*.f64 t z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 a b (*.f64 t z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 a b (*.f64 t z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 a b (*.f64 t z))) (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 t z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 t z))) 2) (cbrt.f64 (fma.f64 a b (*.f64 t z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 a b (*.f64 t z))) (sqrt.f64 (fma.f64 a b (*.f64 t z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 t z) 3)) (/.f64 1 (+.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 t z) (-.f64 (*.f64 t z) (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 t z) 2)) (/.f64 1 (-.f64 (*.f64 a b) (*.f64 t z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 t z) (-.f64 (*.f64 t z) (*.f64 a b)))) (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 t z) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 a b) (*.f64 t z)) (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 t z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 t z) 3)) (+.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 t z) (-.f64 (*.f64 t z) (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 t z) 3)) (+.f64 (pow.f64 (*.f64 t z) 2) (-.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 a b) (*.f64 t z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 t z) 2)) (-.f64 (*.f64 a b) (*.f64 t z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 t z) 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 t z) (-.f64 (*.f64 t z) (*.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 t z) 2))) (neg.f64 (-.f64 (*.f64 a b) (*.f64 t z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 t z) 2) (pow.f64 (*.f64 a b) 2)) (-.f64 (*.f64 t z) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 a b (*.f64 t z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 a b (*.f64 t z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 t z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 a b (*.f64 t z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 a b (*.f64 t z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 a b (*.f64 t z))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 a b (*.f64 t z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 a b (*.f64 t z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 a b (*.f64 t z))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 a b (*.f64 t z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 b a (*.f64 t z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 t z (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 z t (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 a b) (*.f64 t z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 t z) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 t z)) 2) (cbrt.f64 (*.f64 t z)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (cbrt.f64 (*.f64 a b)) (*.f64 t z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 t z)) (sqrt.f64 (*.f64 t z)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 a b)) (sqrt.f64 (*.f64 a b)) (*.f64 t z))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 a b (*.f64 t z))))))))

simplify9.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0748
1948
Stop Event
saturated
Counts
49 → 39
Calls
Call 1
Inputs
(*.f64 t z)
(*.f64 a b)
(*.f64 a b)
(*.f64 t z)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 t z)
(*.f64 t z)
(*.f64 a b)
(*.f64 t z)
(*.f64 t z)
Outputs
(*.f64 t z)
(*.f64 a b)
(*.f64 a b)
(*.f64 t z)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 t z)
(*.f64 t z)
(*.f64 a b)
(*.f64 t z)
(*.f64 t z)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 a b (*.f64 t z))
0.0b
(fma.f64 a b (*.f64 t z))
Compiler

Compiled 19 to 8 computations (57.9% saved)

series3.0ms (0.1%)

Counts
1 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
a
@0
(fma.f64 a b (*.f64 t z))
0.0ms
a
@inf
(fma.f64 a b (*.f64 t z))
0.0ms
z
@-inf
(fma.f64 a b (*.f64 t z))
0.0ms
a
@-inf
(fma.f64 a b (*.f64 t z))
0.0ms
b
@0
(fma.f64 a b (*.f64 t z))

rewrite43.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
661×pow1_binary64
602×add-log-exp_binary64
602×log1p-expm1-u_binary64
602×expm1-log1p-u_binary64
587×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify12.0ms (0.2%)

Algorithm
egg-herbie
Rules
fma-def_binary64
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08336
112336
215336
Stop Event
saturated
Counts
69 → 24
Calls
Call 1
Inputs
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
Outputs
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))

eval29.0ms (0.6%)

Compiler

Compiled 1586 to 441 computations (72.2% saved)

prune29.0ms (0.6%)

Pruning

9 alts after pruning (0 fresh and 9 done)

PrunedKeptTotal
New1260126
Fresh000
Picked011
Done088
Total1269135
Error
0b
Counts
135 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
24.0b
(+.f64 (*.f64 a b) (*.f64 y x))
16.5b
(fma.f64 a b (*.f64 t z))
39.8b
(*.f64 a b)
0.0b
(+.f64 (+.f64 (*.f64 x y) (*.f64 a b)) (*.f64 z t))
16.5b
(fma.f64 t z (*.f64 a b))
16.5b
(+.f64 (*.f64 a b) (*.f64 t z))
39.4b
(*.f64 t z)
47.2b
(*.f64 y x)
23.8b
(+.f64 (*.f64 y x) (*.f64 t z))
Compiler

Compiled 107 to 75 computations (29.9% saved)

regimes118.0ms (2.3%)

Counts
15 → 1
Calls
Call 1
Inputs
(*.f64 a b)
(*.f64 t z)
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (+.f64 (*.f64 x y) (*.f64 a b)) (*.f64 z t))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (fma.f64 y x (*.f64 a b)))
(fma.f64 x y (fma.f64 a b (*.f64 z t)))
Outputs
(+.f64 (+.f64 (*.f64 x y) (*.f64 a b)) (*.f64 z t))
Calls

12 calls:

10.0ms
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
10.0ms
y
10.0ms
x
9.0ms
(*.f64 a b)
9.0ms
b
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1t
0.0b1a
0.0b1b
0.0b1(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
0.0b1(+.f64 (*.f64 x y) (*.f64 z t))
0.0b1(+.f64 (*.f64 x y) (*.f64 z t))
0.0b1(*.f64 x y)
0.0b1(*.f64 z t)
0.0b1(*.f64 a b)
Compiler

Compiled 220 to 110 computations (50% saved)

regimes234.0ms (4.6%)

Counts
8 → 5
Calls
Call 1
Inputs
(*.f64 a b)
(*.f64 t z)
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 y x) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 t z))
Outputs
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 t z))
Calls

7 calls:

78.0ms
b
45.0ms
a
31.0ms
x
27.0ms
t
17.0ms
y
Results
ErrorSegmentsBranch
9.5b5x
12.9b2y
11.9b3z
6.4b5t
8.7b5a
8.5b6b
6.9b3(*.f64 a b)
Compiler

Compiled 101 to 55 computations (45.5% saved)

bsearch237.0ms (4.6%)

Algorithm
binary-search
Steps
TimeLeftRight
169.0ms
1.3369486350424338e+59
3.041435164512471e+62
22.0ms
2.0219529260341908e+43
1.259571995213512e+46
22.0ms
2.453347472753344e-7
6.354518738739417e-7
23.0ms
-3.4806615369311467e-189
-5.546932055026287e-190
Compiler

Compiled 250 to 179 computations (28.4% saved)

regimes115.0ms (2.3%)

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

7 calls:

22.0ms
t
19.0ms
z
15.0ms
b
15.0ms
a
15.0ms
y
Results
ErrorSegmentsBranch
12.0b3x
12.9b2y
14.5b3z
13.5b5t
10.0b3a
11.1b3b
6.9b3(*.f64 a b)
Compiler

Compiled 87 to 54 computations (37.9% saved)

bsearch43.0ms (0.8%)

Algorithm
binary-search
Steps
TimeLeftRight
20.0ms
3.5865632118185803e-138
4.8119510703456606e-136
22.0ms
-6.3930259599442986e+35
-1.0629150446336969e+32
Compiler

Compiled 26 to 19 computations (26.9% saved)

regimes63.0ms (1.2%)

Counts
4 → 2
Calls
Call 1
Inputs
(*.f64 a b)
(*.f64 t z)
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 t z))
Outputs
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 t z))
Calls

7 calls:

12.0ms
b
12.0ms
t
11.0ms
y
11.0ms
(*.f64 a b)
7.0ms
x
Results
ErrorSegmentsBranch
14.2b2x
15.3b3y
16.5b1z
15.3b3t
16.5b1a
14.7b3b
15.3b3(*.f64 a b)
Compiler

Compiled 73 to 53 computations (27.4% saved)

bsearch50.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
49.0ms
-1.1846416999925438e+197
-7.371228830443275e+194
Compiler

Compiled 194 to 145 computations (25.3% saved)

regimes185.0ms (3.6%)

Counts
3 → 9
Calls
Call 1
Inputs
(*.f64 a b)
(*.f64 t z)
(*.f64 y x)
Outputs
(*.f64 t z)
(*.f64 a b)
(*.f64 y x)
(*.f64 a b)
(*.f64 t z)
(*.f64 a b)
(*.f64 y x)
(*.f64 a b)
(*.f64 t z)
Calls

7 calls:

38.0ms
x
33.0ms
z
30.0ms
t
26.0ms
b
21.0ms
y
Results
ErrorSegmentsBranch
27.6b10x
32.1b5y
27.0b9z
22.9b9t
27.1b5a
26.2b7b
25.0b5(*.f64 a b)
Compiler

Compiled 66 to 52 computations (21.2% saved)

bsearch382.0ms (7.5%)

Algorithm
binary-search
Steps
TimeLeftRight
71.0ms
8.632834220920618e+115
5.262432577118258e+117
175.0ms
1.3369486350424338e+59
3.041435164512471e+62
23.0ms
2.5899427923798394e+23
3.729585439916737e+30
22.0ms
145532068872.60223
2291210932103.1133
22.0ms
6.354518738739417e-7
3.0129003239762165e-6
23.0ms
1.344171999137543e-87
5.2172945432749206e-83
23.0ms
1.5167315307053757e-203
8.173701161016679e-203
23.0ms
-2.5406307982697116e-67
-9.139571844400143e-72
Compiler

Compiled 326 to 259 computations (20.6% saved)

regimes125.0ms (2.4%)

Accuracy

Total -36.4b remaining (-141.3%)

Threshold costs -36.4b (-141.3%)

Counts
2 → 5
Calls
Call 1
Inputs
(*.f64 a b)
(*.f64 t z)
Outputs
(*.f64 t z)
(*.f64 a b)
(*.f64 t z)
(*.f64 a b)
(*.f64 t z)
Calls

7 calls:

33.0ms
z
26.0ms
x
17.0ms
y
15.0ms
b
15.0ms
t
Results
ErrorSegmentsBranch
32.0b8x
33.9b4y
27.8b9z
25.8b5t
28.3b3a
28.2b5b
26.2b3(*.f64 a b)
Compiler

Compiled 63 to 51 computations (19% saved)

bsearch145.0ms (2.8%)

Algorithm
binary-search
Steps
TimeLeftRight
76.0ms
8.632834220920618e+115
5.262432577118258e+117
23.0ms
145532068872.60223
2291210932103.1133
23.0ms
6.354518738739417e-7
3.0129003239762165e-6
23.0ms
-2.5406307982697116e-67
-9.139571844400143e-72
Compiler

Compiled 166 to 131 computations (21.1% saved)

simplify6.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
064290
170290
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 (+.f64 (*.f64 x y) (*.f64 a b)) (*.f64 z t))
(if (<=.f64 t -2182573403304823/627057063764139831929324851379409869378845668175598843037877190478889006888518431438644711527536922839520331484815861906173161536477065546885468336421475511783984145060592245840032548652210559519683510272) (+.f64 (*.f64 a b) (*.f64 t z)) (if (<=.f64 t 4634242350465337/18889465931478580854784) (+.f64 (*.f64 a b) (*.f64 y x)) (if (<=.f64 t 20219529260341907890557160069822866943639552) (+.f64 (*.f64 a b) (*.f64 t z)) (if (<=.f64 t 299999999999999999088617516181804470671953197798974385752637440) (+.f64 (*.f64 a b) (*.f64 y x)) (+.f64 (*.f64 a b) (*.f64 t z))))))
(if (<=.f64 (*.f64 a b) -639302595994429860791893957153914880) (+.f64 (*.f64 a b) (*.f64 t z)) (if (<=.f64 (*.f64 a b) 48087950672661552/13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096) (+.f64 (*.f64 y x) (*.f64 t z)) (+.f64 (*.f64 a b) (*.f64 t z))))
(if (<=.f64 x -115000000000000002680509771113189935638791072685963794068758179226469184814439189989007083551298205422516665555029678528525678134982932035355613113975729836702108883419221761631301826992653538951168) (*.f64 y x) (+.f64 (*.f64 a b) (*.f64 t z)))
(if (<=.f64 t -3855940951897805/15177100720513508366558296147058741458143803430094840009779784451085189728165691392) (*.f64 t z) (if (<=.f64 t 5482586898335823872/361473786714651839609485931802192366508973300717001923159475447150424810286233407987951861887389439612274926783780351561999781998832434041296198795326329101623141899709787663433296905279066051548640942013290819886814068736) (*.f64 a b) (if (<=.f64 t 12331426478698250240/9173994463960286046443283581208347763186259956673124494950355357547691504353939232280074212440502746218496) (*.f64 y x) (if (<=.f64 t 6001673261318023/9444732965739290427392) (*.f64 a b) (if (<=.f64 t 2384397416408715/16384) (*.f64 t z) (if (<=.f64 t 258994279237983938805760) (*.f64 a b) (if (<=.f64 t 299999999999999999088617516181804470671953197798974385752637440) (*.f64 y x) (if (<=.f64 t 5199999999999999870932894294058438986434433460697868379618541652491941765182751441622436104418158098459007666299600896) (*.f64 a b) (*.f64 t z)))))))))
(if (<=.f64 t -3855940951897805/15177100720513508366558296147058741458143803430094840009779784451085189728165691392) (*.f64 t z) (if (<=.f64 t 6001673261318023/9444732965739290427392) (*.f64 a b) (if (<=.f64 t 2384397416408715/16384) (*.f64 t z) (if (<=.f64 t 5199999999999999870932894294058438986434433460697868379618541652491941765182751441622436104418158098459007666299600896) (*.f64 a b) (*.f64 t z)))))
(*.f64 a b)
Outputs
(+.f64 (+.f64 (*.f64 x y) (*.f64 a b)) (*.f64 z t))
(+.f64 (*.f64 z t) (+.f64 (*.f64 a b) (*.f64 x y)))
(if (<=.f64 t -2182573403304823/627057063764139831929324851379409869378845668175598843037877190478889006888518431438644711527536922839520331484815861906173161536477065546885468336421475511783984145060592245840032548652210559519683510272) (+.f64 (*.f64 a b) (*.f64 t z)) (if (<=.f64 t 4634242350465337/18889465931478580854784) (+.f64 (*.f64 a b) (*.f64 y x)) (if (<=.f64 t 20219529260341907890557160069822866943639552) (+.f64 (*.f64 a b) (*.f64 t z)) (if (<=.f64 t 299999999999999999088617516181804470671953197798974385752637440) (+.f64 (*.f64 a b) (*.f64 y x)) (+.f64 (*.f64 a b) (*.f64 t z))))))
(if (<=.f64 t -2182573403304823/627057063764139831929324851379409869378845668175598843037877190478889006888518431438644711527536922839520331484815861906173161536477065546885468336421475511783984145060592245840032548652210559519683510272) (+.f64 (*.f64 a b) (*.f64 z t)) (if (<=.f64 t 4634242350465337/18889465931478580854784) (+.f64 (*.f64 a b) (*.f64 x y)) (if (<=.f64 t 20219529260341907890557160069822866943639552) (+.f64 (*.f64 a b) (*.f64 z t)) (if (<=.f64 t 299999999999999999088617516181804470671953197798974385752637440) (+.f64 (*.f64 a b) (*.f64 x y)) (+.f64 (*.f64 a b) (*.f64 z t))))))
(if (<=.f64 (*.f64 a b) -639302595994429860791893957153914880) (+.f64 (*.f64 a b) (*.f64 t z)) (if (<=.f64 (*.f64 a b) 48087950672661552/13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084096) (+.f64 (*.f64 y x) (*.f64 t z)) (+.f64 (*.f64 a b) (*.f64 t z))))
(if (<=.f64 (*.f64 a b) -639302595994429860791893957153914880) (+.f64 (*.f64 a b) (*.f64 z t)) (if (<=.f64 (*.f64 a b) 3005496917041347/837987995621412318723376562387865382967460363787024586107722590232610251879596686050117143635431464230626991136655378178359617675746660621652103062880256) (+.f64 (*.f64 z t) (*.f64 x y)) (+.f64 (*.f64 a b) (*.f64 z t))))
(if (<=.f64 x -115000000000000002680509771113189935638791072685963794068758179226469184814439189989007083551298205422516665555029678528525678134982932035355613113975729836702108883419221761631301826992653538951168) (*.f64 y x) (+.f64 (*.f64 a b) (*.f64 t z)))
(if (<=.f64 x -115000000000000002680509771113189935638791072685963794068758179226469184814439189989007083551298205422516665555029678528525678134982932035355613113975729836702108883419221761631301826992653538951168) (*.f64 x y) (+.f64 (*.f64 a b) (*.f64 z t)))
(if (<=.f64 t -3855940951897805/15177100720513508366558296147058741458143803430094840009779784451085189728165691392) (*.f64 t z) (if (<=.f64 t 5482586898335823872/361473786714651839609485931802192366508973300717001923159475447150424810286233407987951861887389439612274926783780351561999781998832434041296198795326329101623141899709787663433296905279066051548640942013290819886814068736) (*.f64 a b) (if (<=.f64 t 12331426478698250240/9173994463960286046443283581208347763186259956673124494950355357547691504353939232280074212440502746218496) (*.f64 y x) (if (<=.f64 t 6001673261318023/9444732965739290427392) (*.f64 a b) (if (<=.f64 t 2384397416408715/16384) (*.f64 t z) (if (<=.f64 t 258994279237983938805760) (*.f64 a b) (if (<=.f64 t 299999999999999999088617516181804470671953197798974385752637440) (*.f64 y x) (if (<=.f64 t 5199999999999999870932894294058438986434433460697868379618541652491941765182751441622436104418158098459007666299600896) (*.f64 a b) (*.f64 t z)))))))))
(if (<=.f64 t -3855940951897805/15177100720513508366558296147058741458143803430094840009779784451085189728165691392) (*.f64 z t) (if (<=.f64 t 2677044383953039/176500872419263593559319302637789241459459619490723595292712620678918364397574906244117120062201874810681116593642749786132706054117399434226659568030434131651924755717669757535789504530793970482734834967427158147858432) (*.f64 a b) (if (<=.f64 t 752650541912735/559936185544451052639360570142111069530411374308662383724997275240947967795040236345219373317901778944) (*.f64 x y) (if (<=.f64 t 6001673261318023/9444732965739290427392) (*.f64 a b) (if (<=.f64 t 2384397416408715/16384) (*.f64 z t) (if (<=.f64 t 258994279237983938805760) (*.f64 a b) (if (<=.f64 t 299999999999999999088617516181804470671953197798974385752637440) (*.f64 x y) (if (<=.f64 t 5199999999999999870932894294058438986434433460697868379618541652491941765182751441622436104418158098459007666299600896) (*.f64 a b) (*.f64 z t)))))))))
(if (<=.f64 t -3855940951897805/15177100720513508366558296147058741458143803430094840009779784451085189728165691392) (*.f64 t z) (if (<=.f64 t 6001673261318023/9444732965739290427392) (*.f64 a b) (if (<=.f64 t 2384397416408715/16384) (*.f64 t z) (if (<=.f64 t 5199999999999999870932894294058438986434433460697868379618541652491941765182751441622436104418158098459007666299600896) (*.f64 a b) (*.f64 t z)))))
(if (<=.f64 t -3855940951897805/15177100720513508366558296147058741458143803430094840009779784451085189728165691392) (*.f64 z t) (if (<=.f64 t 6001673261318023/9444732965739290427392) (*.f64 a b) (if (<=.f64 t 2384397416408715/16384) (*.f64 z t) (if (<=.f64 t 5199999999999999870932894294058438986434433460697868379618541652491941765182751441622436104418158098459007666299600896) (*.f64 a b) (*.f64 z t)))))
(*.f64 a b)

end107.0ms (2.1%)

Stop Event
done
Remove

(sort a b)

(sort z t)

(sort x y)

Compiler

Compiled 554 to 260 computations (53.1% saved)

Profiling

Loading profile data...