Details

Time bar (total: 7.0s)

analyze607.0ms (8.6%)

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

Compiled 18 to 12 computations (33.3% saved)

sample2.5s (35.4%)

Results
1.7s8256×body256valid
787.0ms4135×body256infinite
Bogosity

preprocess27.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
062224
1144192
2267192
3301192
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 (fma.f64 b y (*.f64 z t)) (*.f64 x a))
(fma.f64 x a (fma.f64 y b (*.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 (fma.f64 b y (*.f64 z t)) (*.f64 x a))
(fma.f64 x a (fma.f64 y b (*.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 t b (fma.f64 x y (*.f64 z a)))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z a)) (*.f64 t b))
(+.f64 (fma.f64 x y (*.f64 t b)) (*.f64 z a))
(fma.f64 t b (fma.f64 x y (*.f64 z a)))
(+.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)

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

Compiled 32 to 20 computations (37.5% saved)

localize14.0ms (0.2%)

Local error

Found 2 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))
Compiler

Compiled 39 to 11 computations (71.8% saved)

series14.0ms (0.2%)

Counts
2 → 120
Calls

30 calls:

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

rewrite82.0ms (1.2%)

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
2365920
Stop Event
node limit
Counts
2 → 183
Calls
Call 1
Inputs
(+.f64 (*.f64 x y) (*.f64 z t))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
Outputs
((#(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 (*.f64 x 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 log1p.f64 (expm1.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 -.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 log1p.f64 (expm1.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)))))))

simplify31.0ms (0.4%)

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

localize13.0ms (0.2%)

Local error

Found 2 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)))
Compiler

Compiled 30 to 9 computations (70% saved)

series11.0ms (0.2%)

Counts
2 → 120
Calls

30 calls:

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

rewrite62.0ms (0.9%)

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 x y (fma.f64 a b (*.f64 z t)))
(fma.f64 a b (*.f64 z t))
Outputs
((#(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 log1p.f64 (expm1.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 +.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 log1p.f64 (expm1.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))))))))

simplify29.0ms (0.4%)

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 (*.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 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 (*.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 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))
(*.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))

eval51.0ms (0.7%)

Compiler

Compiled 3911 to 957 computations (75.5% saved)

prune57.0ms (0.8%)

Pruning

10 alts after pruning (9 fresh and 1 done)

PrunedKeptTotal
New2399248
Fresh000
Picked101
Done011
Total24010250
Error
0b
Counts
250 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
20.1b
(+.f64 (*.f64 y x) (*.f64 a b))
0.0b
(fma.f64 z t (fma.f64 x y (*.f64 a b)))
0.0b
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
20.8b
(+.f64 (*.f64 t z) (*.f64 a b))
43.4b
(*.f64 t z)
20.1b
(fma.f64 y x (*.f64 a b))
40.4b
(*.f64 a b)
22.9b
(+.f64 (*.f64 y x) (*.f64 t z))
42.2b
(*.f64 y x)
0.0b
(+.f64 (fma.f64 z t (*.f64 x y)) (*.f64 a b))
Compiler

Compiled 235 to 161 computations (31.5% saved)

localize11.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 30 to 9 computations (70% saved)

series4.0ms (0.1%)

Counts
1 → 48
Calls

12 calls:

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

rewrite49.0ms (0.7%)

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 x y (*.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a b) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x y) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x y) 1) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x y (*.f64 a b))) 1)))) (#(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 (*.f64 (*.f64 x y) (*.f64 x y)) (-.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 x y) (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x y) (*.f64 x y)) (pow.f64 (*.f64 a b) 2)) (-.f64 (*.f64 x y) (*.f64 a b)))))) (#(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 (pow.f64 (fma.f64 x y (*.f64 a b)) 3) 1/3)))) (#(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 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 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 log1p.f64 (expm1.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))))))))

simplify17.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 → 25
Calls
Call 1
Inputs
(*.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 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))

localize5.0ms (0.1%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

localize5.0ms (0.1%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 23 to 9 computations (60.9% saved)

series4.0ms (0.1%)

Counts
1 → 48
Calls

12 calls:

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

rewrite54.0ms (0.8%)

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

simplify14.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
85 → 40
Calls
Call 1
Inputs
(*.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 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 8 computations (57.9% saved)

series5.0ms (0.1%)

Counts
1 → 48
Calls

12 calls:

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

rewrite48.0ms (0.7%)

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 y x (*.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a b) (*.f64 y x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y x) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 y x) 1) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 y x (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 y x (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 y x (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 y x (*.f64 a b))) (pow.f64 (cbrt.f64 (fma.f64 y x (*.f64 a b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 y x (*.f64 a b))) 2) (cbrt.f64 (fma.f64 y x (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 y x (*.f64 a b))) (sqrt.f64 (fma.f64 y x (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 y x) 3) (pow.f64 (*.f64 a b) 3)) (+.f64 (*.f64 (*.f64 y x) (*.f64 y x)) (-.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 y x) (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 y x) (*.f64 y x)) (pow.f64 (*.f64 a b) 2)) (-.f64 (*.f64 y x) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 y x (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 y x (*.f64 a b)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 y x (*.f64 a b))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 y x (*.f64 a b))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 y x (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 y x (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 y x (*.f64 a b)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 y x (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 y x (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 y x (*.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 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 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 y x)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))
(+.f64 (*.f64 a b) (*.f64 y x))
(fma.f64 a b (*.f64 y x))

eval18.0ms (0.3%)

Compiler

Compiled 1135 to 309 computations (72.8% saved)

prune22.0ms (0.3%)

Pruning

10 alts after pruning (5 fresh and 5 done)

PrunedKeptTotal
New87289
Fresh134
Picked011
Done145
Total891099
Error
0b
Counts
99 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
20.1b
(fma.f64 y x (*.f64 a b))
20.8b
(fma.f64 z t (*.f64 a b))
20.1b
(+.f64 (*.f64 y x) (*.f64 a b))
0.0b
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
20.8b
(+.f64 (*.f64 t z) (*.f64 a b))
22.9b
(fma.f64 z t (*.f64 y x))
43.4b
(*.f64 t z)
40.4b
(*.f64 a b)
22.9b
(+.f64 (*.f64 y x) (*.f64 t z))
42.2b
(*.f64 y x)
Compiler

Compiled 178 to 124 computations (30.3% saved)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 19 to 8 computations (57.9% saved)

series5.0ms (0.1%)

Counts
1 → 48
Calls

12 calls:

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

rewrite70.0ms (1%)

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 z t (*.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a b) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z t) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 z t) 1) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 z t (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 z t (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 z t (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 z t (*.f64 a b))) (pow.f64 (cbrt.f64 (fma.f64 z t (*.f64 a b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 z t (*.f64 a b))) 2) (cbrt.f64 (fma.f64 z t (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 z t (*.f64 a b))) (sqrt.f64 (fma.f64 z t (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 z t) 3) (pow.f64 (*.f64 a b) 3)) (+.f64 (*.f64 (*.f64 z t) (*.f64 z t)) (-.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 z t) (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 z t) (*.f64 z t)) (pow.f64 (*.f64 a b) 2)) (-.f64 (*.f64 z t) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 z t (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 z t (*.f64 a b)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 z t (*.f64 a b))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 z t (*.f64 a b))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 z t (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 z t (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 z t (*.f64 a b)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 z t (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 z t (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 z t (*.f64 a b))))))))

simplify27.0ms (0.4%)

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 → 25
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))

localize11.0ms (0.2%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

localize20.0ms (0.3%)

Local error

Found 1 expressions with local error:

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

Compiled 23 to 9 computations (60.9% saved)

series10.0ms (0.1%)

Counts
1 → 48
Calls

12 calls:

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

rewrite79.0ms (1.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
222708
Stop Event
node limit
Counts
1 → 37
Calls
Call 1
Inputs
(+.f64 (*.f64 t z) (*.f64 a b))
Outputs
((#(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 (/.f64 (pow.f64 (*.f64 t z) 2) (-.f64 (*.f64 t z) (*.f64 a b))) (/.f64 (pow.f64 (*.f64 a b) 2) (-.f64 (*.f64 t z) (*.f64 a b))))))) (#(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 1 (+.f64 (pow.f64 (*.f64 t z) 2) (*.f64 (*.f64 a b) (-.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 1 (-.f64 (*.f64 t z) (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 t z) 2) (*.f64 (*.f64 a b) (-.f64 (*.f64 a b) (*.f64 t z)))) (+.f64 (pow.f64 (*.f64 t z) 3) (pow.f64 (*.f64 a b) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (*.f64 t z) (*.f64 a b)) (-.f64 (pow.f64 (*.f64 t z) 2) (pow.f64 (*.f64 a b) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 t z) 3) (pow.f64 (*.f64 a b) 3)) (+.f64 (pow.f64 (*.f64 t z) 2) (*.f64 (*.f64 a b) (-.f64 (*.f64 a b) (*.f64 t z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 t z) 3) (pow.f64 (*.f64 a b) 3)) (+.f64 (pow.f64 (*.f64 a b) 2) (-.f64 (pow.f64 (*.f64 t z) 2) (*.f64 (*.f64 t z) (*.f64 a b)))))))) (#(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 /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 t z) 3) (pow.f64 (*.f64 a b) 3))) (neg.f64 (+.f64 (pow.f64 (*.f64 t z) 2) (*.f64 (*.f64 a b) (-.f64 (*.f64 a b) (*.f64 t z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 t z) 2) (pow.f64 (*.f64 a b) 2))) (neg.f64 (-.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 (*.f64 a b) (*.f64 t z)))))) (#(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 log1p.f64 (expm1.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 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 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 1 (*.f64 t z) (*.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 (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 (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 (sqrt.f64 (*.f64 a b)) (sqrt.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))))))

simplify24.0ms (0.3%)

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
85 → 40
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))

localize13.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
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
0.0ms
y
@0
(+.f64 (*.f64 y x) (*.f64 t z))
0.0ms
y
@inf
(+.f64 (*.f64 y x) (*.f64 t z))
0.0ms
t
@0
(+.f64 (*.f64 y x) (*.f64 t z))
0.0ms
y
@-inf
(+.f64 (*.f64 y x) (*.f64 t z))
0.0ms
x
@inf
(+.f64 (*.f64 y x) (*.f64 t z))

rewrite57.0ms (0.8%)

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
222708
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 log1p.f64 (expm1.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))))))

simplify9.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)

localize8.0ms (0.1%)

Compiler

Compiled 19 to 8 computations (57.9% saved)

eval20.0ms (0.3%)

Compiler

Compiled 1350 to 396 computations (70.7% saved)

prune24.0ms (0.3%)

Pruning

10 alts after pruning (0 fresh and 10 done)

PrunedKeptTotal
New1040104
Fresh000
Picked011
Done099
Total10410114
Error
0b
Counts
114 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
20.1b
(fma.f64 y x (*.f64 a b))
20.8b
(fma.f64 z t (*.f64 a b))
20.1b
(+.f64 (*.f64 y x) (*.f64 a b))
0.0b
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
20.8b
(+.f64 (*.f64 t z) (*.f64 a b))
22.9b
(fma.f64 z t (*.f64 y x))
43.4b
(*.f64 t z)
40.4b
(*.f64 a b)
22.9b
(+.f64 (*.f64 y x) (*.f64 t z))
42.2b
(*.f64 y x)
Compiler

Compiled 119 to 83 computations (30.3% saved)

regimes226.0ms (3.2%)

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

14 calls:

18.0ms
(+.f64 (*.f64 x y) (*.f64 z t))
18.0ms
(+.f64 (*.f64 x y) (*.f64 z t))
17.0ms
x
17.0ms
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
17.0ms
z
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 x y)
0.0b1(*.f64 z t)
0.0b1(*.f64 z t)
0.0b1(*.f64 a b)
Compiler

Compiled 223 to 125 computations (43.9% saved)

regimes201.0ms (2.9%)

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

13 calls:

16.0ms
(+.f64 (*.f64 x y) (*.f64 z t))
16.0ms
a
15.0ms
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
15.0ms
z
15.0ms
(+.f64 (*.f64 x y) (*.f64 z t))
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 z t)
0.0b1(*.f64 a b)
Compiler

Compiled 196 to 114 computations (41.8% saved)

regimes163.0ms (2.3%)

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

11 calls:

18.0ms
b
15.0ms
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
14.0ms
a
14.0ms
t
14.0ms
(+.f64 (*.f64 x y) (*.f64 z t))
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 x y)
0.0b1(*.f64 z t)
0.0b1(*.f64 a b)
Compiler

Compiled 164 to 96 computations (41.5% saved)

regimes401.0ms (5.7%)

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

7 calls:

92.0ms
x
69.0ms
y
57.0ms
z
57.0ms
b
48.0ms
t
Results
ErrorSegmentsBranch
8.2b7x
9.5b5y
9.5b6z
9.1b4t
8.9b4a
9.1b6b
7.6b3(*.f64 a b)
Compiler

Compiled 87 to 55 computations (36.8% saved)

bsearch79.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
39.0ms
1.760804751392109e-42
2.3505536286885863e-35
39.0ms
-3655369533477786.5
-476433042501959.4
Compiler

Compiled 26 to 19 computations (26.9% saved)

regimes325.0ms (4.6%)

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

7 calls:

96.0ms
b
44.0ms
t
44.0ms
a
37.0ms
y
35.0ms
z
Results
ErrorSegmentsBranch
10.5b3x
11.7b3y
11.1b3z
9.8b5t
15.2b5a
10.6b11b
16.2b4(*.f64 a b)
Compiler

Compiled 80 to 54 computations (32.5% saved)

bsearch284.0ms (4%)

Algorithm
binary-search
Steps
TimeLeftRight
77.0ms
2.2330955079196827e+225
1.2638828610677192e+231
126.0ms
2.4081493662706066e+189
1.9853062121201582e+195
40.0ms
8.385577096170122e-56
5.891836169070741e-52
40.0ms
-1.3457258737983367e-109
-1.377590954331081e-112
Compiler

Compiled 530 to 379 computations (28.5% saved)

regimes244.0ms (3.5%)

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

7 calls:

57.0ms
(*.f64 a b)
42.0ms
y
41.0ms
t
27.0ms
b
25.0ms
a
Results
ErrorSegmentsBranch
18.7b3x
17.9b5y
16.4b3z
13.8b5t
18.7b3a
18.9b3b
16.1b7(*.f64 a b)
Compiler

Compiled 73 to 53 computations (27.4% saved)

bsearch246.0ms (3.5%)

Algorithm
binary-search
Steps
TimeLeftRight
70.0ms
2.2330955079196827e+225
1.2638828610677192e+231
79.0ms
5.051734976422924e+174
2.547311103605517e+175
56.0ms
1.759090861189369e+86
2.137837739822182e+86
41.0ms
-5.718962599885292e-46
-2.2016926674544535e-51
Compiler

Compiled 458 to 343 computations (25.1% saved)

regimes295.0ms (4.2%)

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

7 calls:

75.0ms
b
50.0ms
a
47.0ms
t
45.0ms
z
40.0ms
(*.f64 a b)
Results
ErrorSegmentsBranch
27.9b6x
32.5b4y
26.1b13z
26.6b9t
27.6b6a
26.0b11b
24.5b6(*.f64 a b)
Compiler

Compiled 66 to 52 computations (21.2% saved)

bsearch108.0ms (1.5%)

Algorithm
binary-search
Steps
TimeLeftRight
23.0ms
0.027713940983546258
1.9686849452238466
21.0ms
3.0857381932457447e-211
8.546555281559551e-210
21.0ms
-0.0
7.502108905748574e-308
21.0ms
-5.863064413199493e-74
-4.840921048894808e-93
21.0ms
-1.0343818289721886e+40
-1.0921438286591756e+38
Compiler

Compiled 26 to 19 computations (26.9% saved)

regimes96.0ms (1.4%)

Accuracy

Total -33.3b remaining (-115.8%)

Threshold costs -33.3b (-115.8%)

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

7 calls:

17.0ms
x
15.0ms
t
14.0ms
y
14.0ms
z
12.0ms
b
Results
ErrorSegmentsBranch
36.2b5x
36.4b4y
32.6b5z
29.9b5t
31.0b3a
34.3b3b
28.8b3(*.f64 a b)
Compiler

Compiled 63 to 51 computations (19% saved)

bsearch52.0ms (0.7%)

Algorithm
binary-search
Steps
TimeLeftRight
22.0ms
2.3505536286885863e-35
7.877114547989497e-32
30.0ms
-1.0343818289721886e+40
-1.0921438286591756e+38
Compiler

Compiled 26 to 19 computations (26.9% saved)

simplify11.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
069323
177323
Stop Event
done
saturated
Calls
Call 1
Inputs
(fma.f64 z t (fma.f64 x y (*.f64 a b)))
(+.f64 (fma.f64 z t (*.f64 x y)) (*.f64 a b))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
(if (<=.f64 (*.f64 a b) -7310739066955573/2) (+.f64 (*.f64 t z) (*.f64 a b)) (if (<=.f64 (*.f64 a b) 1381593820080065/784637716923335095479473677900958302012794430558004314112) (+.f64 (*.f64 y x) (*.f64 t z)) (+.f64 (*.f64 y x) (*.f64 a b))))
(if (<=.f64 t -5693440775871125/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) (+.f64 (*.f64 t z) (*.f64 a b)) (if (<=.f64 t 4630010087137821/55213970774324510299478046898216203619608871777363092441300193790394368) (+.f64 (*.f64 y x) (*.f64 a b)) (if (<=.f64 t 2450000000000000118410674059885918810003733905798460733587720491782323343230435360945422678959446157300517109634494754181085872281217724929687531382489343446881015782517549318611161378193408) (+.f64 (*.f64 t z) (*.f64 a b)) (if (<=.f64 t 1250000000000000070594263775651051768550782977478822968375706455194320704959472746486524701986824978724710211684420452620707475805758654846631450182004099724274729925380077899773205297603239096149499485381627191590502310870368911360) (+.f64 (*.f64 y x) (*.f64 a b)) (+.f64 (*.f64 t z) (*.f64 a b))))))
(if (<=.f64 t -7352014860359985/12855504354071922204335696738729300820177623950262342682411008) (*.f64 t z) (if (<=.f64 t 209999999999999989268953304860595761634197302897526657546290320964884126167692677742592) (+.f64 (*.f64 y x) (*.f64 a b)) (if (<=.f64 t 5099999999999999714630371577786791431846718946844138642774696582744205243469055635869145258743735318702125259557046338396434260763015506253167780391040027921705319751854587904) (*.f64 t z) (if (<=.f64 t 1250000000000000070594263775651051768550782977478822968375706455194320704959472746486524701986824978724710211684420452620707475805758654846631450182004099724274729925380077899773205297603239096149499485381627191590502310870368911360) (+.f64 (*.f64 y x) (*.f64 a b)) (*.f64 t z)))))
(if (<=.f64 (*.f64 a b) -10343818289721886303039648545439572033536) (*.f64 a b) (if (<=.f64 (*.f64 a b) -7464545713283631/127314748520905380391777855525586135065716774604121015664758778084648831235208544136462336) (*.f64 t z) (if (<=.f64 (*.f64 a b) 0) (*.f64 y x) (if (<=.f64 (*.f64 a b) 3654986856931549/11844773043065711480323635013294239465766037117894719018089691452225120183459296312949206610325977157215024800850914559983608856537741198665193842125253152001987113769690322155382272992184436377145866387891513586051123404341248) (*.f64 t z) (if (<=.f64 (*.f64 a b) 3993999817166939/144115188075855872) (*.f64 y x) (*.f64 a b))))))
(if (<=.f64 (*.f64 a b) -10343818289721886303039648545439572033536) (*.f64 a b) (if (<=.f64 (*.f64 a b) 2198616305255977/93536104789177786765035829293842113257979682750464) (*.f64 t z) (*.f64 a b)))
(*.f64 t z)
Outputs
(fma.f64 z t (fma.f64 x y (*.f64 a b)))
(+.f64 (fma.f64 z t (*.f64 x y)) (*.f64 a b))
(+.f64 (*.f64 a b) (fma.f64 z t (*.f64 x y)))
(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 z t) (*.f64 x y)))
(if (<=.f64 (*.f64 a b) -7310739066955573/2) (+.f64 (*.f64 t z) (*.f64 a b)) (if (<=.f64 (*.f64 a b) 1381593820080065/784637716923335095479473677900958302012794430558004314112) (+.f64 (*.f64 y x) (*.f64 t z)) (+.f64 (*.f64 y x) (*.f64 a b))))
(if (<=.f64 (*.f64 a b) -7310739066955573/2) (+.f64 (*.f64 a b) (*.f64 z t)) (if (<=.f64 (*.f64 a b) 1381593820080065/784637716923335095479473677900958302012794430558004314112) (+.f64 (*.f64 z t) (*.f64 x y)) (+.f64 (*.f64 a b) (*.f64 x y))))
(if (<=.f64 t -5693440775871125/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) (+.f64 (*.f64 t z) (*.f64 a b)) (if (<=.f64 t 4630010087137821/55213970774324510299478046898216203619608871777363092441300193790394368) (+.f64 (*.f64 y x) (*.f64 a b)) (if (<=.f64 t 2450000000000000118410674059885918810003733905798460733587720491782323343230435360945422678959446157300517109634494754181085872281217724929687531382489343446881015782517549318611161378193408) (+.f64 (*.f64 t z) (*.f64 a b)) (if (<=.f64 t 1250000000000000070594263775651051768550782977478822968375706455194320704959472746486524701986824978724710211684420452620707475805758654846631450182004099724274729925380077899773205297603239096149499485381627191590502310870368911360) (+.f64 (*.f64 y x) (*.f64 a b)) (+.f64 (*.f64 t z) (*.f64 a b))))))
(if (<=.f64 t -5693440775871125/42307582002575910332922579714097346549017899709713998034217522897561970639123926132812109468141778230245837569601494931472384) (+.f64 (*.f64 a b) (*.f64 z t)) (if (<=.f64 t 4630010087137821/55213970774324510299478046898216203619608871777363092441300193790394368) (+.f64 (*.f64 a b) (*.f64 x y)) (if (<=.f64 t 2450000000000000118410674059885918810003733905798460733587720491782323343230435360945422678959446157300517109634494754181085872281217724929687531382489343446881015782517549318611161378193408) (+.f64 (*.f64 a b) (*.f64 z t)) (if (<=.f64 t 1250000000000000070594263775651051768550782977478822968375706455194320704959472746486524701986824978724710211684420452620707475805758654846631450182004099724274729925380077899773205297603239096149499485381627191590502310870368911360) (+.f64 (*.f64 a b) (*.f64 x y)) (+.f64 (*.f64 a b) (*.f64 z t))))))
(if (<=.f64 t -7352014860359985/12855504354071922204335696738729300820177623950262342682411008) (*.f64 t z) (if (<=.f64 t 209999999999999989268953304860595761634197302897526657546290320964884126167692677742592) (+.f64 (*.f64 y x) (*.f64 a b)) (if (<=.f64 t 5099999999999999714630371577786791431846718946844138642774696582744205243469055635869145258743735318702125259557046338396434260763015506253167780391040027921705319751854587904) (*.f64 t z) (if (<=.f64 t 1250000000000000070594263775651051768550782977478822968375706455194320704959472746486524701986824978724710211684420452620707475805758654846631450182004099724274729925380077899773205297603239096149499485381627191590502310870368911360) (+.f64 (*.f64 y x) (*.f64 a b)) (*.f64 t z)))))
(if (<=.f64 t -7352014860359985/12855504354071922204335696738729300820177623950262342682411008) (*.f64 z t) (if (<=.f64 t 209999999999999989268953304860595761634197302897526657546290320964884126167692677742592) (+.f64 (*.f64 a b) (*.f64 x y)) (if (<=.f64 t 5099999999999999714630371577786791431846718946844138642774696582744205243469055635869145258743735318702125259557046338396434260763015506253167780391040027921705319751854587904) (*.f64 z t) (if (<=.f64 t 1250000000000000070594263775651051768550782977478822968375706455194320704959472746486524701986824978724710211684420452620707475805758654846631450182004099724274729925380077899773205297603239096149499485381627191590502310870368911360) (+.f64 (*.f64 a b) (*.f64 x y)) (*.f64 z t)))))
(if (<=.f64 (*.f64 a b) -10343818289721886303039648545439572033536) (*.f64 a b) (if (<=.f64 (*.f64 a b) -7464545713283631/127314748520905380391777855525586135065716774604121015664758778084648831235208544136462336) (*.f64 t z) (if (<=.f64 (*.f64 a b) 0) (*.f64 y x) (if (<=.f64 (*.f64 a b) 3654986856931549/11844773043065711480323635013294239465766037117894719018089691452225120183459296312949206610325977157215024800850914559983608856537741198665193842125253152001987113769690322155382272992184436377145866387891513586051123404341248) (*.f64 t z) (if (<=.f64 (*.f64 a b) 3993999817166939/144115188075855872) (*.f64 y x) (*.f64 a b))))))
(if (<=.f64 (*.f64 a b) -10343818289721886303039648545439572033536) (*.f64 a b) (if (<=.f64 (*.f64 a b) -7464545713283631/127314748520905380391777855525586135065716774604121015664758778084648831235208544136462336) (*.f64 z t) (if (<=.f64 (*.f64 a b) 0) (*.f64 x y) (if (<=.f64 (*.f64 a b) 3654986856931549/11844773043065711480323635013294239465766037117894719018089691452225120183459296312949206610325977157215024800850914559983608856537741198665193842125253152001987113769690322155382272992184436377145866387891513586051123404341248) (*.f64 z t) (if (<=.f64 (*.f64 a b) 3993999817166939/144115188075855872) (*.f64 x y) (*.f64 a b))))))
(if (<=.f64 (*.f64 a b) -10343818289721886303039648545439572033536) (*.f64 a b) (if (<=.f64 (*.f64 a b) 2198616305255977/93536104789177786765035829293842113257979682750464) (*.f64 t z) (*.f64 a b)))
(if (<=.f64 (*.f64 a b) -10343818289721886303039648545439572033536) (*.f64 a b) (if (<=.f64 (*.f64 a b) 2198616305255977/93536104789177786765035829293842113257979682750464) (*.f64 z t) (*.f64 a b)))
(*.f64 t z)
(*.f64 z t)
Compiler

Compiled 279 to 138 computations (50.5% saved)

soundness0.0ms (0%)

end128.0ms (1.8%)

Remove

(sort a b)

(sort z t)

(sort x y)

Compiler

Compiled 321 to 122 computations (62% saved)

Profiling

Loading profile data...