Details

Time bar (total: 10.9s)

analyze209.0ms (1.9%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
0%87.4%12.6%5
0%74.9%25.1%6
3.1%71.8%25.1%7
7.8%60.8%31.4%8
11.7%50.7%37.6%9
17.6%44.9%37.6%10
22.8%36.5%40.7%11
26.6%29.5%43.8%12
Compiler

Compiled 12 to 8 computations (33.3% saved)

sample1.7s (15.4%)

Results
1.5s8256×body256valid
117.0ms1096×body256invalid

preprocess209.0ms (1.9%)

Algorithm
egg-herbie
Rules
783×div-sub_binary64
742×sub-neg_binary64
477×associate-/r*_binary64
442×associate-/r/_binary64
367×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02048
14248
26548
312348
434248
582848
6185148
7296948
8415548
9490748
10602748
11672148
12683148
13695548
14702748
15702748
16783248
033
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
(-.f64 (*.f64 y (log.f64 (/.f64 y x))) z)
(-.f64 (*.f64 z (log.f64 (/.f64 z y))) x)
(-.f64 (*.f64 x (log.f64 (/.f64 x z))) y)
Outputs
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
(-.f64 (*.f64 y (log.f64 (/.f64 y x))) z)
(fma.f64 y (log.f64 (/.f64 y x)) (neg.f64 z))
(-.f64 (*.f64 z (log.f64 (/.f64 z y))) x)
(fma.f64 z (log.f64 (/.f64 z y)) (neg.f64 x))
(-.f64 (*.f64 x (log.f64 (/.f64 x z))) y)
(fma.f64 x (log.f64 (/.f64 x z)) (neg.f64 y))
Compiler

Compiled 14 to 10 computations (28.6% saved)

simplify310.0ms (2.9%)

Algorithm
egg-herbie
Rules
2527×fma-neg_binary64
1695×fma-def_binary64
365×distribute-rgt-in_binary64
337×unsub-neg_binary64
315×associate--l+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0812
11512
22312
33912
49812
523212
649912
792012
8127612
9219212
10370512
11407912
12420612
13424512
14425912
15564112
16687212
17731112
18763712
19772212
20777212
21778212
22787412
23788612
24788612
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
Outputs
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)

eval0.0ms (0%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 11 to 7 computations (36.4% saved)

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.3b
(*.f64 x (log.f64 (/.f64 x y)))
12.9b
(log.f64 (/.f64 x y))
Compiler

Compiled 27 to 7 computations (74.1% saved)

series164.0ms (1.5%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
48.0ms
x
@-inf
(log.f64 (/.f64 x y))
28.0ms
x
@0
(log.f64 (/.f64 x y))
28.0ms
x
@0
(*.f64 x (log.f64 (/.f64 x y)))
18.0ms
y
@inf
(log.f64 (/.f64 x y))
17.0ms
y
@-inf
(log.f64 (/.f64 x y))

rewrite136.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
639×pow1_binary64
589×add-log-exp_binary64
589×log1p-expm1-u_binary64
589×expm1-log1p-u_binary64
576×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify309.0ms (2.8%)

Algorithm
egg-herbie
Rules
2599×fma-neg_binary64
954×fma-def_binary64
437×unsub-neg_binary64
398×distribute-rgt-in_binary64
282×distribute-neg-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
031504
161456
2125456
3343456
4879456
51874456
63834456
74523456
84623456
94649456
104663456
114664456
124940456
135511456
145592456
155622456
165648456
175656456
185696456
195720456
205720456
Stop Event
node limit
Counts
84 → 47
Calls
Call 1
Inputs
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
Outputs
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))

eval25.0ms (0.2%)

Compiler

Compiled 578 to 262 computations (54.7% saved)

prune42.0ms (0.4%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New351247
Fresh000
Picked011
Done000
Total351348
Error
0.1b
Counts
48 → 13
Alt Table
Click to see full alt table
StatusErrorProgram
39.4b
(-.f64 (*.f64 x (pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)) z)
33.2b
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
33.2b
(-.f64 (*.f64 x (/.f64 (-.f64 (*.f64 (log.f64 x) (log.f64 x)) (*.f64 (log.f64 y) (log.f64 y))) (+.f64 (log.f64 x) (log.f64 y)))) z)
13.4b
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
13.4b
(-.f64 (*.f64 x (+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))) z)
13.5b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
14.1b
(-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z)
31.2b
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
33.2b
(-.f64 (*.f64 x (/.f64 (-.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 y) 3)) (+.f64 (*.f64 (log.f64 x) (log.f64 x)) (+.f64 (*.f64 (log.f64 y) (log.f64 y)) (*.f64 (log.f64 x) (log.f64 y)))))) z)
37.6b
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
13.8b
(-.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 3) z)
39.5b
(-.f64 (*.f64 x (exp.f64 (log.f64 (log.f64 (/.f64 x y))))) z)
39.5b
(-.f64 (*.f64 x (expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))) z)
Compiler

Compiled 407 to 259 computations (36.4% saved)

localize65.0ms (0.6%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))
0.5b
(pow.f64 (cbrt.f64 (/.f64 x y)) 2)
4.1b
(log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))
13.3b
(cbrt.f64 (/.f64 x y))
Compiler

Compiled 77 to 27 computations (64.9% saved)

series38.0ms (0.3%)

Counts
4 → 0
Calls

24 calls:

TimeVariablePointExpression
3.0ms
x
@0
(log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))
3.0ms
y
@-inf
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))
3.0ms
x
@-inf
(log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))
3.0ms
x
@-inf
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))
2.0ms
x
@0
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))

rewrite151.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
702×prod-diff_binary64
469×log-prod_binary64
289×pow-prod-down_binary64
249×pow2_binary64
245×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01032
121432
2271830
Stop Event
node limit
Counts
4 → 234
Calls
Call 1
Inputs
(cbrt.f64 (/.f64 x y))
(log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))
(pow.f64 (cbrt.f64 (/.f64 x y)) 2)
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cbrt.f64 (/.f64 x y)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 (/.f64 x y))))) (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (/.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 x y)) (pow.f64 (exp.f64 1) (fma.f64 (neg.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 1 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 x y)) (pow.f64 (exp.f64 1) (fma.f64 (neg.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 x y)) (pow.f64 (exp.f64 1) (fma.f64 (neg.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (pow.f64 (exp.f64 1) (neg.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (pow.f64 (exp.f64 1) (*.f64 -1 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (pow.f64 (exp.f64 1) (*.f64 (neg.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (pow.f64 (exp.f64 1) (*.f64 (neg.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (cbrt.f64 (/.f64 1 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 2) (cbrt.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 x y) 1/6) (pow.f64 (/.f64 x y) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 4)) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 1) (*.f64 1/3 (*.f64 2/3 (log.f64 (/.f64 x y))))) (pow.f64 (exp.f64 1) (log.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 1) (*.f64 1/6 (log.f64 (/.f64 x y)))) (pow.f64 (exp.f64 1) (*.f64 1/6 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (cbrt.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (cbrt.f64 (/.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (cbrt.f64 y) (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 x) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (neg.f64 x)) (cbrt.f64 (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (cbrt.f64 x)) (neg.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (exp.f64 1) (exp.f64 (log1p.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))) (pow.f64 (exp.f64 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (exp.f64 1) (log.f64 (cbrt.f64 x))) (pow.f64 (exp.f64 1) (log.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 x y) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 2) (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 x y) 2) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 x y) 3) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 2) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 x y) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 x y)) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 y x) -1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (*.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (*.f64 (log.f64 (/.f64 x y)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (*.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (*.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 2))) (*.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 x y)))) (*.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y))))) (*.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 2)) (*.f64 (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (cbrt.f64 y) (cbrt.f64 x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 1) 1) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 1) (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 1) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) 1) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (cbrt.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))) (sqrt.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2))) (sqrt.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 1) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 1) 1/3) (log.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 1) (+.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))) (-.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) 1) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (cbrt.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))) (cbrt.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2))) (cbrt.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (pow.f64 (cbrt.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) 2)) (cbrt.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (sqrt.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))) (sqrt.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 x y)) 1/3))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (cbrt.f64 (/.f64 x y))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 2/3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 4)) (*.f64 1/3 (*.f64 2/3 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/3 (*.f64 2/3 (log.f64 (/.f64 x y)))) (log.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/6 (log.f64 (/.f64 x y))) (log.f64 (sqrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (/.f64 x y))) (*.f64 1/6 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 5)) (log.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 2/3 (log.f64 (/.f64 x y))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 2 (log.f64 (cbrt.f64 x))) (*.f64 2 (log.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (*.f64 (cbrt.f64 x) (cbrt.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (*.f64 (cbrt.f64 (/.f64 x y)) (cbrt.f64 x))) (log.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 2/3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (pow.f64 (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 2) (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (*.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (*.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/3 (log.f64 (pow.f64 (/.f64 x y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 1/3 (*.f64 2/3 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2/3 (log.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 1 (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (cbrt.f64 (/.f64 x y))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/3 (log.f64 (/.f64 x y)) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (-.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (log.f64 (cbrt.f64 (/.f64 x y))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 x y)) (cbrt.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (pow.f64 (exp.f64 2) (fma.f64 (neg.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 1 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (pow.f64 (exp.f64 2) (fma.f64 (neg.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (pow.f64 (exp.f64 2) (fma.f64 (neg.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 4) (pow.f64 (exp.f64 2) (neg.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 4) (pow.f64 (exp.f64 2) (*.f64 -1 (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 4) (pow.f64 (exp.f64 2) (*.f64 (neg.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 4) (pow.f64 (exp.f64 2) (*.f64 (neg.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 4) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 x y) 1/6) (sqrt.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 x y)) (pow.f64 (/.f64 x y) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 5) (cbrt.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 2) (*.f64 1/3 (*.f64 2/3 (log.f64 (/.f64 x y))))) (pow.f64 (exp.f64 2) (log.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 2) (*.f64 1/6 (log.f64 (/.f64 x y)))) (pow.f64 (exp.f64 2) (*.f64 1/6 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 1) (log.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 4))) (pow.f64 (exp.f64 1) (*.f64 1/3 (*.f64 2/3 (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 4) (pow.f64 (cbrt.f64 (/.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cbrt.f64 x) (cbrt.f64 (/.f64 x y))) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cbrt.f64 (/.f64 x y)) (cbrt.f64 x)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (exp.f64 2) (exp.f64 (log1p.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))) (exp.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (exp.f64 2) (log.f64 (cbrt.f64 x))) (pow.f64 (exp.f64 2) (log.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (exp.f64 1) (exp.f64 (log1p.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))))) (pow.f64 (exp.f64 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 x y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2/3 (log.f64 (/.f64 x y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 x) (log.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (log.f64 (/.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 (/.f64 y x) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 2 (log.f64 (cbrt.f64 x))) (log.f64 (/.f64 y (cbrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (sqrt.f64 x)) (log.f64 (/.f64 y (sqrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 2) (log.f64 (cbrt.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 -1) (log.f64 (neg.f64 (/.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 (neg.f64 x))) (log.f64 (neg.f64 (neg.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 x (sqrt.f64 y))) (log.f64 (sqrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 x 1)) (log.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 x (pow.f64 (cbrt.f64 y) 2))) (log.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (*.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (cbrt.f64 x))) (log.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (log.f64 (sqrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (/.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (/.f64 x y))) (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 2)) (cbrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (/.f64 x y))) (sqrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 3) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) (/.f64 1 (-.f64 (fma.f64 4 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2)) (*.f64 2 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (/.f64 x y)) (log.f64 (cbrt.f64 (/.f64 x y)))) (/.f64 1 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (log.f64 (/.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (fma.f64 4 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2)) (*.f64 2 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2))) (+.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 3) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (log.f64 (cbrt.f64 (/.f64 x y))) (*.f64 (log.f64 (/.f64 x y)) (log.f64 (cbrt.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 3) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) (-.f64 (fma.f64 4 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2)) (*.f64 2 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 3) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) (+.f64 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2) (-.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 2) (*.f64 2 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (/.f64 x y)) (log.f64 (cbrt.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 3) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))) (neg.f64 (-.f64 (fma.f64 4 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2)) (*.f64 2 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (log.f64 (/.f64 x y)) (log.f64 (cbrt.f64 (/.f64 x y))))) (neg.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2) (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 2)) (-.f64 (log.f64 (cbrt.f64 (/.f64 x y))) (*.f64 2/3 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (/.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (/.f64 x y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 (fma.f64 4 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2)) (*.f64 2 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2))) (+.f64 (pow.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 3) (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 (cbrt.f64 (/.f64 x y))) (*.f64 (log.f64 (/.f64 x y)) (log.f64 (cbrt.f64 (/.f64 x y))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 (/.f64 y x) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (-.f64 (/.f64 x y) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 2/3 (log.f64 (/.f64 x y))))) (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2) (+.f64 1 (-.f64 (cbrt.f64 (/.f64 x y)) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 2/3 (log.f64 (/.f64 x y))))) (+.f64 1 (-.f64 (cbrt.f64 (/.f64 x y)) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (-.f64 (cbrt.f64 (/.f64 x y)) 1)) (pow.f64 (cbrt.f64 (/.f64 x y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (cbrt.f64 (/.f64 x y)) (+.f64 1 (expm1.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (-.f64 (cbrt.f64 (/.f64 x y)) 1)) (+.f64 1 (expm1.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (/.f64 x y) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (log.f64 (/.f64 x y))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 (log.f64 (cbrt.f64 (/.f64 x y))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2/3 (log.f64 (/.f64 x y))) 1 (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2 (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 1 (*.f64 2/3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 2/3 (log.f64 (/.f64 x y))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (cbrt.f64 (/.f64 x y))) (*.f64 2/3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 x) (neg.f64 (log.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (pow.f64 (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 2) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) 2) (cbrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (*.f64 2/3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (*.f64 2/3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (*.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (*.f64 2/3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (*.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1/3 (log.f64 (/.f64 x y)) (*.f64 2/3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (cbrt.f64 (log.f64 x)) (neg.f64 (log.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 x)) (sqrt.f64 (log.f64 x)) (neg.f64 (log.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (-.f64 (sqrt.f64 (*.f64 2/3 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (*.f64 2/3 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) (log.f64 (cbrt.f64 (/.f64 x y))))))))

simplify22.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize26.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.3b
(*.f64 x (neg.f64 (log.f64 (/.f64 y x))))
13.7b
(log.f64 (/.f64 y x))
Compiler

Compiled 34 to 8 computations (76.5% saved)

series147.0ms (1.4%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
64.0ms
x
@0
(*.f64 x (neg.f64 (log.f64 (/.f64 y x))))
17.0ms
y
@-inf
(log.f64 (/.f64 y x))
17.0ms
y
@0
(log.f64 (/.f64 y x))
14.0ms
x
@-inf
(log.f64 (/.f64 y x))
14.0ms
x
@0
(log.f64 (/.f64 y x))

rewrite66.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
666×pow1_binary64
615×add-log-exp_binary64
614×log1p-expm1-u_binary64
614×expm1-log1p-u_binary64
602×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify258.0ms (2.4%)

Algorithm
egg-herbie
Rules
3152×fma-neg_binary64
632×fma-def_binary64
306×associate--r+_binary64
305×unsub-neg_binary64
287×associate--r-_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
035600
192504
2260456
3704456
41803456
53639456
63951456
74011456
84027456
94031456
104033456
116027456
126272456
136400456
146589456
156657456
166661456
176759456
186785456
196785456
Stop Event
node limit
Counts
100 → 63
Calls
Call 1
Inputs
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
Outputs
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) (neg.f64 x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))

localize15.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
0.3b
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
Compiler

Compiled 43 to 10 computations (76.7% saved)

series126.0ms (1.2%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
41.0ms
x
@0
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
32.0ms
y
@0
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
13.0ms
x
@-inf
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
11.0ms
x
@0
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
10.0ms
y
@inf
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))

rewrite68.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
853×pow1_binary64
792×add-log-exp_binary64
791×log1p-expm1-u_binary64
791×expm1-log1p-u_binary64
777×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify240.0ms (2.2%)

Algorithm
egg-herbie
Rules
2796×fma-neg_binary64
813×fma-def_binary64
606×unsub-neg_binary64
452×distribute-rgt-in_binary64
292×distribute-neg-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
040792
193648
2196648
3529456
41682456
53955456
64931456
75172456
85241456
95261456
105267456
115631456
126230456
136313456
146343456
156369456
166377456
176417456
186441456
196441456
Stop Event
node limit
Counts
102 → 68
Calls
Call 1
Inputs
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
Outputs
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))

localize17.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(log1p.f64 (log.f64 (/.f64 x y)))
0.1b
(*.f64 x (expm1.f64 (log1p.f64 (log.f64 (/.f64 x y)))))
0.5b
(expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))
12.9b
(log.f64 (/.f64 x y))
Compiler

Compiled 42 to 9 computations (78.6% saved)

series378.0ms (3.5%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
233.0ms
y
@-inf
(log1p.f64 (log.f64 (/.f64 x y)))
59.0ms
x
@0
(log1p.f64 (log.f64 (/.f64 x y)))
30.0ms
y
@0
(log1p.f64 (log.f64 (/.f64 x y)))
19.0ms
x
@-inf
(log1p.f64 (log.f64 (/.f64 x y)))
18.0ms
y
@inf
(log1p.f64 (log.f64 (/.f64 x y)))

rewrite67.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
721×pow1_binary64
664×add-log-exp_binary64
664×expm1-log1p-u_binary64
663×log1p-expm1-u_binary64
649×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify199.0ms (1.8%)

Algorithm
egg-herbie
Rules
2251×fma-def_binary64
806×fma-neg_binary64
508×unsub-neg_binary64
357×distribute-rgt-in_binary64
317×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
041768
192696
2192696
3521696
41405696
53020696
65121696
75956696
86156696
96184696
106196696
116199696
126221696
136229696
146229696
Stop Event
node limit
Counts
128 → 73
Calls
Call 1
Inputs
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))))
Outputs
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))))
(log1p.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(log1p.f64 (-.f64 (log.f64 x) (log.f64 y)))

localize76.0ms (0.7%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f64 (log.f64 (/.f64 x y)))
0.1b
(*.f64 x (pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2))
0.2b
(pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)
12.9b
(log.f64 (/.f64 x y))
Compiler

Compiled 46 to 16 computations (65.2% saved)

series19.0ms (0.2%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
2.0ms
x
@0
(pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)
1.0ms
x
@inf
(pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)
1.0ms
x
@-inf
(pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)
1.0ms
y
@0
(pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)
1.0ms
y
@inf
(pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)

rewrite309.0ms (2.8%)

Algorithm
batch-egg-rewrite
Rules
785×pow1_binary64
727×add-log-exp_binary64
727×log1p-expm1-u_binary64
727×expm1-log1p-u_binary64
710×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0923
118823
2200823
Stop Event
node limit
Counts
3 → 59
Calls
Call 1
Inputs
(pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)
(*.f64 x (pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2))
(sqrt.f64 (log.f64 (/.f64 x y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 x) (neg.f64 (log.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (/.f64 x y))) (log.f64 (sqrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 x) (log.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (/.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (/.f64 x y))) (sqrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (/.f64 x y))) (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (/.f64 x y))) (*.f64 (cbrt.f64 (sqrt.f64 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 2) (cbrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (/.f64 x y)) 1/4) (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 1/4) (sqrt.f64 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (log.f64 (/.f64 x y))) (pow.f64 (log.f64 (/.f64 x y)) 1/4)) (pow.f64 (log.f64 (/.f64 x y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (log.f64 (/.f64 x y))) (cbrt.f64 (log.f64 (/.f64 x y)))) (cbrt.f64 (sqrt.f64 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 y) 3)) (+.f64 (*.f64 (log.f64 x) (log.f64 x)) (+.f64 (*.f64 (log.f64 y) (log.f64 y)) (*.f64 (log.f64 x) (log.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (log.f64 x) (log.f64 x)) (*.f64 (log.f64 y) (log.f64 y))) (+.f64 (log.f64 x) (log.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (/.f64 x y) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (/.f64 x y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (log.f64 (/.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (/.f64 x y) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (log.f64 (/.f64 x y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 (/.f64 x y) x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (log.f64 (/.f64 x y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (log.f64 (/.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (/.f64 x y))) (cbrt.f64 (sqrt.f64 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (log.f64 (/.f64 x y)))) (cbrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (/.f64 x y)) 1/4) (pow.f64 (log.f64 (/.f64 x y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 2)) (sqrt.f64 (cbrt.f64 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 2) 1/2) (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (/.f64 x y)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (/.f64 x y)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (log.f64 (/.f64 x y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (/.f64 x y)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (log.f64 (/.f64 x y)))))))))

simplify327.0ms (3%)

Algorithm
egg-herbie
Rules
2599×fma-neg_binary64
954×fma-def_binary64
439×unsub-neg_binary64
399×distribute-rgt-in_binary64
279×distribute-neg-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
036768
166696
2130696
3346696
4888696
51887696
63856696
74549696
84664696
94690696
104704696
114705696
124981696
135548696
145630696
155660696
165686696
175694696
185734696
195758696
205758696
Stop Event
node limit
Counts
131 → 76
Calls
Call 1
Inputs
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(sqrt.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(sqrt.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(sqrt.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(sqrt.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(sqrt.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(sqrt.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(sqrt.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
Outputs
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(sqrt.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)))
(sqrt.f64 (-.f64 (log.f64 x) (log.f64 y)))

eval274.0ms (2.5%)

Compiler

Compiled 12182 to 4992 computations (59% saved)

prune172.0ms (1.6%)

Pruning

15 alts after pruning (12 fresh and 3 done)

PrunedKeptTotal
New6419650
Fresh437
Picked101
Done235
Total64815663
Error
0.0b
Counts
663 → 15
Alt Table
Click to see full alt table
StatusErrorProgram
14.1b
(-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z)
37.6b
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
36.3b
(-.f64 (*.f64 x (-.f64 (log.f64 (sqrt.f64 x)) (log.f64 (/.f64 y (sqrt.f64 x))))) z)
13.4b
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
33.1b
(-.f64 (+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x)) z)
33.2b
(-.f64 (*.f64 x (/.f64 (-.f64 (*.f64 (log.f64 x) (log.f64 x)) (*.f64 (log.f64 y) (log.f64 y))) (+.f64 (log.f64 x) (log.f64 y)))) z)
13.5b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
31.2b
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
13.5b
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
39.2b
(-.f64 (*.f64 x (neg.f64 (expm1.f64 (log1p.f64 (log.f64 (/.f64 y x)))))) z)
34.6b
(-.f64 (*.f64 x (-.f64 (*.f64 2 (log.f64 (cbrt.f64 x))) (log.f64 (/.f64 y (cbrt.f64 x))))) z)
13.8b
(-.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 3) z)
33.2b
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
13.4b
(-.f64 (*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) z)
37.7b
(-.f64 (/.f64 (*.f64 (-.f64 (pow.f64 (log.f64 x) 2) (pow.f64 (log.f64 y) 2)) x) (log.f64 (*.f64 x y))) z)
Compiler

Compiled 419 to 281 computations (32.9% saved)

localize20.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))
0.3b
(*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)
13.3b
(cbrt.f64 (/.f64 x y))
Compiler

Compiled 46 to 16 computations (65.2% saved)

series8.0ms (0.1%)

Counts
2 → 0
Calls

12 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))
1.0ms
y
@0
(*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))
1.0ms
x
@0
(*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)
1.0ms
y
@-inf
(*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))
1.0ms
y
@inf
(*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))

rewrite60.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
878×pow1_binary64
814×log1p-expm1-u_binary64
814×expm1-log1p-u_binary64
813×add-log-exp_binary64
795×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify8.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize22.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y)))))
0.3b
(*.f64 3 (log.f64 (/.f64 x y)))
0.3b
(*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))
12.9b
(log.f64 (/.f64 x y))
Compiler

Compiled 51 to 24 computations (52.9% saved)

series8.0ms (0.1%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
2.0ms
y
@0
(*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y)))))
0.0ms
x
@inf
(*.f64 3 (log.f64 (/.f64 x y)))
0.0ms
y
@-inf
(*.f64 3 (log.f64 (/.f64 x y)))
0.0ms
x
@-inf
(*.f64 3 (log.f64 (/.f64 x y)))
0.0ms
y
@0
(*.f64 3 (log.f64 (/.f64 x y)))

rewrite70.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
900×pow1_binary64
835×add-log-exp_binary64
835×log1p-expm1-u_binary64
835×expm1-log1p-u_binary64
820×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01024
121024
2228424
Stop Event
node limit
Counts
3 → 45
Calls
Call 1
Inputs
(*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))
(*.f64 3 (log.f64 (/.f64 x y)))
(*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y)))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 x) (neg.f64 (log.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (/.f64 x y))) (log.f64 (sqrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (cbrt.f64 (pow.f64 (/.f64 x y) 2))) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 x) (log.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 y) 3)) (+.f64 (*.f64 (log.f64 x) (log.f64 x)) (+.f64 (*.f64 (log.f64 y) (log.f64 y)) (*.f64 (log.f64 x) (log.f64 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (log.f64 x) (log.f64 x)) (*.f64 (log.f64 y) (log.f64 y))) (+.f64 (log.f64 x) (log.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (/.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (/.f64 x y) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (/.f64 x y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (pow.f64 (/.f64 x y) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (pow.f64 (/.f64 x y) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) 3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) 3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (pow.f64 (/.f64 x y) 3))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 2) 9))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (/.f64 x y) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (pow.f64 (/.f64 x y) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 (/.f64 x y) 3) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (pow.f64 (/.f64 x y) 3))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (pow.f64 (/.f64 x y) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (/.f64 x y) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (log.f64 (/.f64 x y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (pow.f64 (/.f64 x y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 (/.f64 x y) x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (pow.f64 (/.f64 x y) x))))))))

simplify196.0ms (1.8%)

Algorithm
egg-herbie
Rules
2831×fma-neg_binary64
583×unsub-neg_binary64
550×fma-def_binary64
434×distribute-rgt-in_binary64
268×distribute-lft-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
037792
195720
2212720
3543720
41275720
52690720
64732720
75540720
85894720
95972720
105996720
116000720
126016720
136018720
Stop Event
node limit
Counts
117 → 62
Calls
Call 1
Inputs
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(*.f64 3 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 3 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 3 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 3 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 3 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 3 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 3 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 3 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
Outputs
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 y)) (log.f64 x))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(fma.f64 -1 (log.f64 y) (log.f64 x))
(-.f64 (log.f64 x) (log.f64 y))
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 3 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 (-.f64 (log.f64 y) (log.f64 x)) -3)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))

localize17.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (log.f64 x) x)
0.1b
(*.f64 (neg.f64 (log.f64 y)) x)
0.2b
(+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x))
Compiler

Compiled 44 to 10 computations (77.3% saved)

series68.0ms (0.6%)

Counts
3 → 56
Calls

15 calls:

TimeVariablePointExpression
23.0ms
x
@0
(+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x))
15.0ms
y
@0
(+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x))
13.0ms
x
@-inf
(+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x))
10.0ms
y
@-inf
(+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x))
2.0ms
x
@-inf
(*.f64 (log.f64 x) x)

rewrite77.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
889×pow1_binary64
822×add-log-exp_binary64
821×log1p-expm1-u_binary64
821×expm1-log1p-u_binary64
805×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify253.0ms (2.3%)

Algorithm
egg-herbie
Rules
3115×fma-neg_binary64
633×fma-def_binary64
365×associate--r-_binary64
354×unsub-neg_binary64
271×sub-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
042560
1109504
2247504
3723504
41741504
53433504
64015504
74076504
84093504
94103504
104103504
116409504
127085504
137175504
147205504
157233504
167237504
177237504
187257504
Stop Event
node limit
Counts
124 → 82
Calls
Call 1
Inputs
(*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 -1 (log.f64 y))) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (log.f64 y)) x))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)) (*.f64 (log.f64 x) x))
(+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)) (*.f64 (log.f64 x) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (log.f64 (/.f64 1 y)) x)
(*.f64 (log.f64 (/.f64 1 y)) x)
(*.f64 (log.f64 (/.f64 1 y)) x)
(*.f64 (log.f64 (/.f64 1 y)) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
Outputs
(*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (log.f64 y)) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (log.f64 y)) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (log.f64 y)) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (log.f64 y)) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)) (*.f64 (log.f64 x) x))
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 (log.f64 (/.f64 1 y)) x)
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 (log.f64 (/.f64 1 y)) x)
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 (log.f64 (/.f64 1 y)) x)
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 (log.f64 (/.f64 1 y)) x)
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 (neg.f64 (log.f64 y)) x)
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 (neg.f64 (neg.f64 (log.f64 x))) x)
(*.f64 x (log.f64 x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 (neg.f64 (neg.f64 (log.f64 x))) x)
(*.f64 x (log.f64 x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 (neg.f64 (neg.f64 (log.f64 x))) x)
(*.f64 x (log.f64 x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 (neg.f64 (neg.f64 (log.f64 x))) x)
(*.f64 x (log.f64 x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (neg.f64 (neg.f64 (log.f64 x))) x)
(*.f64 x (log.f64 x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (neg.f64 (neg.f64 (log.f64 x))) x)
(*.f64 x (log.f64 x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (neg.f64 (neg.f64 (log.f64 x))) x)
(*.f64 x (log.f64 x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (neg.f64 (neg.f64 (log.f64 x))) x)
(*.f64 x (log.f64 x))

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(log1p.f64 (log.f64 (/.f64 y x)))
0.1b
(*.f64 x (neg.f64 (expm1.f64 (log1p.f64 (log.f64 (/.f64 y x))))))
0.6b
(expm1.f64 (log1p.f64 (log.f64 (/.f64 y x))))
13.7b
(log.f64 (/.f64 y x))
Compiler

Compiled 51 to 10 computations (80.4% saved)

series113.0ms (1%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
24.0ms
x
@0
(log1p.f64 (log.f64 (/.f64 y x)))
22.0ms
y
@-inf
(log1p.f64 (log.f64 (/.f64 y x)))
19.0ms
y
@0
(log1p.f64 (log.f64 (/.f64 y x)))
19.0ms
y
@inf
(log1p.f64 (log.f64 (/.f64 y x)))
17.0ms
x
@-inf
(log1p.f64 (log.f64 (/.f64 y x)))

rewrite71.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
746×pow1_binary64
688×add-log-exp_binary64
687×expm1-log1p-u_binary64
686×log1p-expm1-u_binary64
673×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify285.0ms (2.6%)

Algorithm
egg-herbie
Rules
2192×fma-neg_binary64
829×fma-def_binary64
824×associate--r-_binary64
424×unsub-neg_binary64
335×sub-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
046888
1123744
2324696
3891696
42383696
54933696
65610696
75801696
85860696
95881696
105892696
115951696
125975696
135975696
145975696
Stop Event
node limit
Counts
143 → 88
Calls
Call 1
Inputs
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (+.f64 1 (log.f64 (/.f64 -1 x)))))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (+.f64 1 (log.f64 (/.f64 -1 x)))))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (+.f64 1 (log.f64 (/.f64 -1 x)))))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (+.f64 1 (log.f64 (/.f64 -1 x)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
Outputs
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))
(+.f64 (neg.f64 (log.f64 x)) (log.f64 y))
(-.f64 (log.f64 y) (log.f64 x))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y)) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y)))) x))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 -1 (*.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (/.f64 -1 x)))))
(neg.f64 (*.f64 x (+.f64 (neg.f64 (log.f64 x)) (log.f64 y))))
(*.f64 x (neg.f64 (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (+.f64 1 (log.f64 (/.f64 -1 x)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (+.f64 1 (log.f64 (/.f64 -1 x)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (+.f64 1 (log.f64 (/.f64 -1 x)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (+.f64 1 (log.f64 (/.f64 -1 x)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 y) (*.f64 -1 (log.f64 x)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 1 x)) (log.f64 y))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))
(log.f64 (+.f64 1 (+.f64 (log.f64 (/.f64 -1 x)) (log.f64 (*.f64 -1 y)))))
(log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log.f64 y)))
(log1p.f64 (-.f64 (log.f64 y) (log.f64 x)))

localize17.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))
0.3b
(*.f64 x (log.f64 (/.f64 x y)))
0.3b
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)
12.9b
(log.f64 (/.f64 x y))
Compiler

Compiled 47 to 13 computations (72.3% saved)

series16.0ms (0.1%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
3.0ms
x
@-inf
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)
2.0ms
x
@inf
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)
2.0ms
x
@0
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)
1.0ms
x
@-inf
(sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))
1.0ms
y
@inf
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)

rewrite368.0ms (3.4%)

Algorithm
batch-egg-rewrite
Rules
790×pow1_binary64
732×add-log-exp_binary64
732×log1p-expm1-u_binary64
732×expm1-log1p-u_binary64
715×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0920
118820
2202120
Stop Event
node limit
Counts
2 → 52
Calls
Call 1
Inputs
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)
(sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (log.f64 (/.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (log.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (/.f64 x y)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (log.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 2) (*.f64 (cbrt.f64 (log.f64 (/.f64 x y))) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x x)) (*.f64 (cbrt.f64 x) (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) (*.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))) (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (/.f64 x y))) (*.f64 (sqrt.f64 (log.f64 (/.f64 x y))) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 (log.f64 (/.f64 x y))) (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4) (*.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4) (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4)) (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 2)) (cbrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x))) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (/.f64 x y)) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y))))) (cbrt.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) (sqrt.f64 x)) (sqrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (/.f64 x y) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (log.f64 (/.f64 x y)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 (/.f64 x y) x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (log.f64 (/.f64 x y)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) (cbrt.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))) (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (/.f64 x y))) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4) (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)) (sqrt.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) 1/2) (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y))))))))))

simplify268.0ms (2.5%)

Algorithm
egg-herbie
Rules
2265×fma-neg_binary64
668×unsub-neg_binary64
659×fma-def_binary64
410×associate-+l+_binary64
303×distribute-rgt-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
025312
142288
276288
3158288
4329288
5600288
61182288
72201288
83219288
93368288
103805288
114152288
124288288
134326288
144350288
154354288
164502288
174558288
184558288
197238288
207882288
Stop Event
node limit
Counts
76 → 60
Calls
Call 1
Inputs
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(sqrt.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x))
Outputs
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(sqrt.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))
(sqrt.f64 (*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x))
(sqrt.f64 (*.f64 x (fma.f64 -1 (log.f64 y) (log.f64 x))))
(sqrt.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))))

eval346.0ms (3.2%)

Compiler

Compiled 8066 to 3527 computations (56.3% saved)

prune104.0ms (1%)

Pruning

22 alts after pruning (16 fresh and 6 done)

PrunedKeptTotal
New50712519
Fresh347
Picked011
Done257
Total51222534
Error
0.0b
Counts
534 → 22
Alt Table
Click to see full alt table
StatusErrorProgram
13.5b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
41.7b
(-.f64 (pow.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3/2)) 2) z)
0.2b
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
37.6b
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
35.3b
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
50.6b
(-.f64 (+.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2) (*.f64 (neg.f64 (log.f64 y)) x)) z)
37.7b
(-.f64 (pow.f64 (pow.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4) 2) 2) z)
13.8b
(-.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 3) z)
31.2b
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))))) z)
13.4b
(-.f64 (*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) z)
39.7b
(-.f64 (*.f64 (*.f64 (log.f64 (/.f64 x y)) (sqrt.f64 x)) (sqrt.f64 x)) z)
35.5b
(-.f64 (-.f64 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1) z)
26.5b
(-.f64 (*.f64 (*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x))) (cbrt.f64 x)) z)
33.1b
(-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)
37.7b
(-.f64 (/.f64 (*.f64 (-.f64 (pow.f64 (log.f64 x) 2) (pow.f64 (log.f64 y) 2)) x) (log.f64 (*.f64 x y))) z)
39.4b
(-.f64 (*.f64 (*.f64 x (sqrt.f64 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (/.f64 x y)))) z)
31.2b
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
13.5b
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
13.4b
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
39.2b
(-.f64 (*.f64 x (neg.f64 (expm1.f64 (log1p.f64 (log.f64 (/.f64 y x)))))) z)
13.8b
(-.f64 (*.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 2) (*.f64 (cbrt.f64 (log.f64 (/.f64 x y))) x)) z)
33.2b
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
Compiler

Compiled 592 to 404 computations (31.8% saved)

localize22.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)
0.4b
(/.f64 (cbrt.f64 x) (cbrt.f64 y))
0.6b
(cbrt.f64 x)
0.6b
(cbrt.f64 y)
Compiler

Compiled 52 to 17 computations (67.3% saved)

series8.0ms (0.1%)

Counts
4 → 0
Calls

18 calls:

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

rewrite73.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
849×pow1_binary64
789×add-log-exp_binary64
789×log1p-expm1-u_binary64
789×expm1-log1p-u_binary64
769×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0923
118018
2215418
Stop Event
node limit
Counts
4 → 82
Calls
Call 1
Inputs
(cbrt.f64 y)
(cbrt.f64 x)
(/.f64 (cbrt.f64 x) (cbrt.f64 y))
(*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 y)) (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2) (cbrt.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 y 1/6) (pow.f64 y 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 y) 2) 1/3) (cbrt.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 y) 1/3) (pow.f64 (sqrt.f64 y) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 y 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 y)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 y 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 y) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 y)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 x)) (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (cbrt.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 1/6) (pow.f64 x 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 2) 1/3) (cbrt.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 x) 1/3) (pow.f64 (sqrt.f64 x) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 x 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 x)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 (cbrt.f64 (/.f64 x y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (pow.f64 (cbrt.f64 y) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (*.f64 (cbrt.f64 (cbrt.f64 x)) (pow.f64 (cbrt.f64 y) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 2) (cbrt.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 1/6) (*.f64 (pow.f64 x 1/6) (pow.f64 (cbrt.f64 y) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (/.f64 x y))) (sqrt.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (cbrt.f64 x)) (/.f64 1 (neg.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 y) -1) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) 1) (/.f64 (cbrt.f64 (cbrt.f64 x)) (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 x 1/6) 1) (/.f64 (pow.f64 x 1/6) (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2)) (/.f64 (cbrt.f64 x) (cbrt.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2)) (cbrt.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 x 1/6) (pow.f64 (cbrt.f64 (cbrt.f64 y)) 2)) (/.f64 (pow.f64 x 1/6) (cbrt.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 y 1/6)) (/.f64 (cbrt.f64 x) (pow.f64 y 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (pow.f64 y 1/6)) (/.f64 (cbrt.f64 (cbrt.f64 x)) (pow.f64 y 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (cbrt.f64 (/.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 x y) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 y x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y))))) (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (cbrt.f64 x) (neg.f64 (cbrt.f64 y))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (/.f64 x y))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 x) (log.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (/.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (/.f64 x y) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (/.f64 x y))))))))

simplify9.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize11.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 27 to 7 computations (74.1% saved)

series31.0ms (0.3%)

Counts
3 → 84
Calls

21 calls:

TimeVariablePointExpression
8.0ms
y
@-inf
(log.f64 (*.f64 x y))
8.0ms
x
@-inf
(log.f64 (*.f64 x y))
5.0ms
z
@0
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
3.0ms
x
@0
(*.f64 (log.f64 (*.f64 x y)) x)
1.0ms
x
@-inf
(*.f64 (log.f64 (*.f64 x y)) x)

rewrite73.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
908×pow1_binary64
839×add-log-exp_binary64
839×log1p-expm1-u_binary64
839×expm1-log1p-u_binary64
821×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify148.0ms (1.4%)

Algorithm
egg-herbie
Rules
2056×fma-def_binary64
585×fma-neg_binary64
417×unsub-neg_binary64
355×associate--r+_binary64
338×associate--r-_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
046756
1111756
2194756
3516756
41569756
53432756
64837756
75509756
85628756
95668756
105733756
Stop Event
node limit
Counts
156 → 95
Calls
Call 1
Inputs
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 -1 z)
(+.f64 (*.f64 (+.f64 (log.f64 y) (log.f64 x)) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 (log.f64 y) (log.f64 x)) x) (*.f64 -1 z))
(+.f64 (*.f64 (+.f64 (log.f64 y) (log.f64 x)) x) (*.f64 -1 z))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x))
(-.f64 (*.f64 x (+.f64 (log.f64 y) (log.f64 x))) z)
(-.f64 (*.f64 x (+.f64 (log.f64 y) (log.f64 x))) z)
(-.f64 (*.f64 x (+.f64 (log.f64 y) (log.f64 x))) z)
(-.f64 (*.f64 x (+.f64 (log.f64 y) (log.f64 x))) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x) z)
(*.f64 (log.f64 (*.f64 y x)) x)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(*.f64 -1 z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
Outputs
(+.f64 (log.f64 y) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (log.f64 y) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (log.f64 y) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (log.f64 y) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(log.f64 (*.f64 y x))
(+.f64 (log.f64 y) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (log.f64 y) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (log.f64 y) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (log.f64 y) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(log.f64 (*.f64 y x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(log.f64 (*.f64 y x))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (log.f64 (*.f64 y x)))
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 (+.f64 (log.f64 y) (log.f64 x)) x) (*.f64 -1 z))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 (+.f64 (log.f64 y) (log.f64 x)) x) (*.f64 -1 z))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 (+.f64 (log.f64 y) (log.f64 x)) x) (*.f64 -1 z))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 x (log.f64 (*.f64 y x)))
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 x (+.f64 (log.f64 y) (log.f64 x))) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 x (+.f64 (log.f64 y) (log.f64 x))) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 x (+.f64 (log.f64 y) (log.f64 x))) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 x (+.f64 (log.f64 y) (log.f64 x))) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(-.f64 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x) z)
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(*.f64 (log.f64 (*.f64 y x)) x)
(*.f64 x (log.f64 (*.f64 y x)))
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(*.f64 -1 z)
(neg.f64 z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)
(+.f64 (*.f64 -1 z) (*.f64 (log.f64 (*.f64 y x)) x))
(-.f64 (*.f64 x (log.f64 (*.f64 y x))) z)

localize26.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
0.1b
(*.f64 x (*.f64 1/3 (*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))))
0.2b
(*.f64 1/3 (*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))))
0.3b
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
Compiler

Compiled 73 to 27 computations (63% saved)

series7.0ms (0.1%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
1.0ms
y
@inf
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
1.0ms
x
@inf
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
1.0ms
x
@-inf
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
1.0ms
y
@-inf
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
1.0ms
y
@0
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))

rewrite86.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
547×log-prod_binary64
359×prod-diff_binary64
323×pow-prod-down_binary64
269×pow2_binary64
254×pow-unpow_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify183.0ms (1.7%)

Algorithm
egg-herbie
Rules
3126×fma-neg_binary64
681×unsub-neg_binary64
466×distribute-rgt-in_binary64
289×sub-neg_binary64
261×distribute-lft-in_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0471224
11061008
22491008
3674720
42207720
54354720
65546720
75941720
86053720
96081720
106087720
116111720
126114720
Stop Event
node limit
Counts
256 → 204
Calls
Call 1
Inputs
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 3 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))))
Outputs
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y)))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y)))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y))))
(-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))
(-.f64 (log.f64 x) (log.f64 y))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))) x)
(*.f64 x (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 3 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 -1)) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (neg.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (log.f64 y))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 1 y))))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))
(*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (*.f64 -1 (log.f64 (/.f64 -1 y)))))
(*.f64 (-.f64 (+.f64 (log.f64 -1) (log.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 -3 (-.f64 (log.f64 y) (log.f64 x)))

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x)))
0.6b
(cbrt.f64 x)
12.9b
(log.f64 (/.f64 x y))
31.0b
(cbrt.f64 (*.f64 x x))
Compiler

Compiled 57 to 11 computations (80.7% saved)

series8.0ms (0.1%)

Counts
2 → 12
Calls

9 calls:

TimeVariablePointExpression
2.0ms
y
@0
(*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x)))
1.0ms
x
@inf
(*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x)))
1.0ms
x
@0
(*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x)))
1.0ms
x
@-inf
(*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x)))
1.0ms
y
@inf
(*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x)))

rewrite59.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
771×pow1_binary64
714×add-log-exp_binary64
714×log1p-expm1-u_binary64
714×expm1-log1p-u_binary64
695×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify63.0ms (0.6%)

Algorithm
egg-herbie
Rules
670×fma-def_binary64
509×unsub-neg_binary64
449×sub-neg_binary64
434×distribute-rgt-in_binary64
346×distribute-lft-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
025228
167212
2151212
3394212
41348212
54235212
66892212
Stop Event
node limit
Counts
43 → 36
Calls
Call 1
Inputs
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
Outputs
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 x) (neg.f64 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 x) (neg.f64 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 x) (neg.f64 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 x) (neg.f64 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 x) (neg.f64 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 x) (neg.f64 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 x) (neg.f64 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 x) (neg.f64 (log.f64 y))))
(*.f64 (cbrt.f64 (*.f64 x x)) (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (pow.f64 (*.f64 1 (pow.f64 x 2)) 1/3) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))))
(*.f64 (cbrt.f64 (*.f64 x x)) (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2) (*.f64 (neg.f64 (log.f64 y)) x))
0.1b
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2)
0.1b
(*.f64 x (log.f64 x))
0.1b
(*.f64 (neg.f64 (log.f64 y)) x)
Compiler

Compiled 63 to 19 computations (69.8% saved)

series9.0ms (0.1%)

Counts
3 → 27
Calls

12 calls:

TimeVariablePointExpression
2.0ms
x
@-inf
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2)
1.0ms
x
@0
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2)
1.0ms
x
@inf
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2)
1.0ms
y
@0
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2) (*.f64 (neg.f64 (log.f64 y)) x))
1.0ms
x
@0
(*.f64 x (log.f64 x))

rewrite93.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
504×log-prod_binary64
360×exp-prod_binary64
351×pow-prod-down_binary64
314×fma-def_binary64
252×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01218
125718
2311718
Stop Event
node limit
Counts
3 → 365
Calls
Call 1
Inputs
(*.f64 x (log.f64 x))
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2)
(+.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2) (*.f64 (neg.f64 (log.f64 y)) x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 x x)) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 x x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 x x)) 2)) (log.f64 (cbrt.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 x x))) (log.f64 (sqrt.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (pow.f64 x x)) (/.f64 0 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (log.f64 (pow.f64 x x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (pow.f64 (log.f64 (pow.f64 x x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 1 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (pow.f64 (log.f64 (pow.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3)) (neg.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2)) (neg.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (pow.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 2) (log.f64 (sqrt.f64 (log.f64 (pow.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/2) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/6) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (pow.f64 (log.f64 (pow.f64 x x)) 3)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (log.f64 (pow.f64 x x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (log.f64 (pow.f64 x x)))) 2)) (cbrt.f64 (log.f64 (log.f64 (pow.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (log.f64 (pow.f64 x x))))) (sqrt.f64 (log.f64 (log.f64 (pow.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (-.f64 (pow.f64 x x) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (-.f64 (pow.f64 x x) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (-.f64 (pow.f64 x x) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 1 (+.f64 1 (-.f64 (pow.f64 x x) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 x x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (log.f64 (pow.f64 x x)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (log.f64 (pow.f64 x x)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (log.f64 (pow.f64 x x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (log.f64 (pow.f64 x x)))) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 3) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (log.f64 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (log.f64 x) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (log.f64 x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 x) x 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 x) x (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (pow.f64 x x)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (pow.f64 x x)) 1 (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (pow.f64 x x)) 1 (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 x (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 1 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 (cbrt.f64 x) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 (sqrt.f64 x) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 (neg.f64 x) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (pow.f64 x x)) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (pow.f64 x x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (/.f64 1 (log.f64 (pow.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (/.f64 1 (log.f64 (pow.f64 x x))) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (/.f64 1 (pow.f64 (log.f64 (pow.f64 x x)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (/.f64 1 (pow.f64 (log.f64 (pow.f64 x x)) 2)) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (*.f64 (cbrt.f64 (log.f64 x)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (*.f64 (cbrt.f64 (log.f64 x)) x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (pow.f64 (log.f64 (pow.f64 x x)) 3/4) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (pow.f64 (*.f64 (log.f64 x) (log.f64 (pow.f64 x x))) 1/2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (pow.f64 (*.f64 (log.f64 x) (log.f64 (pow.f64 x x))) 1/2) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 x)) (*.f64 (sqrt.f64 (log.f64 x)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 x)) (*.f64 (sqrt.f64 (log.f64 x)) x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (pow.f64 (log.f64 (pow.f64 x x)) 1/4) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -1) 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (log.f64 x))) (sqrt.f64 (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (log.f64 x))) (sqrt.f64 (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (sqrt.f64 x)) (sqrt.f64 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 5/6) (pow.f64 (log.f64 (pow.f64 x x)) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 5/6) (pow.f64 (log.f64 (pow.f64 x x)) 1/6) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 (pow.f64 x x)) x) 1/2) (sqrt.f64 (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 (pow.f64 x x)) x) 1/2) (sqrt.f64 (log.f64 x)) (*.f64 (neg.f64 x) 0))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 x x)) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 x x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 x x)) 2)) (log.f64 (cbrt.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 x x))) (log.f64 (sqrt.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (pow.f64 x x)) (/.f64 0 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (log.f64 (pow.f64 x x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (log.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 x) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (pow.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (/.f64 1 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (/.f64 1 (pow.f64 (log.f64 (pow.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (*.f64 (cbrt.f64 (log.f64 x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (pow.f64 (log.f64 (pow.f64 x x)) 3/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (pow.f64 (*.f64 (log.f64 x) (log.f64 (pow.f64 x x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 x)) (*.f64 (sqrt.f64 (log.f64 x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (pow.f64 (log.f64 (pow.f64 x x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (log.f64 x))) (sqrt.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 x) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 5/6) (pow.f64 (log.f64 (pow.f64 x x)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (log.f64 (pow.f64 x x)) x) 1/2) (sqrt.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (pow.f64 (log.f64 (pow.f64 x x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 1 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (pow.f64 (log.f64 (pow.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3)) (neg.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2)) (neg.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (-.f64 (pow.f64 x x) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (-.f64 (pow.f64 x x) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (-.f64 (pow.f64 x x) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 1 (+.f64 1 (-.f64 (pow.f64 x x) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 x x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (log.f64 (pow.f64 x x)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (log.f64 (pow.f64 x x)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (log.f64 (pow.f64 x x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (log.f64 (pow.f64 x x)))) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 3) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (log.f64 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (log.f64 x) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (log.f64 x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 x) x 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 x) x (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (pow.f64 x x)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (pow.f64 x x)) 1 (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (pow.f64 x x)) 1 (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 x (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 1 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 (cbrt.f64 x) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 (sqrt.f64 x) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 (neg.f64 x) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (pow.f64 x x)) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (pow.f64 x x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (/.f64 1 (log.f64 (pow.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (/.f64 1 (log.f64 (pow.f64 x x))) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (/.f64 1 (pow.f64 (log.f64 (pow.f64 x x)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (/.f64 1 (pow.f64 (log.f64 (pow.f64 x x)) 2)) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (*.f64 (cbrt.f64 (log.f64 x)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (*.f64 (cbrt.f64 (log.f64 x)) x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (pow.f64 (log.f64 (pow.f64 x x)) 3/4) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (pow.f64 (*.f64 (log.f64 x) (log.f64 (pow.f64 x x))) 1/2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (pow.f64 (*.f64 (log.f64 x) (log.f64 (pow.f64 x x))) 1/2) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 x)) (*.f64 (sqrt.f64 (log.f64 x)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 x)) (*.f64 (sqrt.f64 (log.f64 x)) x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (pow.f64 (log.f64 (pow.f64 x x)) 1/4) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -1) 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (log.f64 x))) (sqrt.f64 (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (log.f64 x))) (sqrt.f64 (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (sqrt.f64 x)) (sqrt.f64 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 5/6) (pow.f64 (log.f64 (pow.f64 x x)) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 5/6) (pow.f64 (log.f64 (pow.f64 x x)) 1/6) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 (pow.f64 x x)) x) 1/2) (sqrt.f64 (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 (pow.f64 x x)) x) 1/2) (sqrt.f64 (log.f64 x)) (*.f64 (neg.f64 x) 0))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (pow.f64 x x)) (/.f64 0 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (log.f64 (pow.f64 x x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (log.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 x) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (pow.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (/.f64 1 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (/.f64 1 (pow.f64 (log.f64 (pow.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (*.f64 (cbrt.f64 (log.f64 x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (pow.f64 (log.f64 (pow.f64 x x)) 3/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (pow.f64 (*.f64 (log.f64 x) (log.f64 (pow.f64 x x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 x)) (*.f64 (sqrt.f64 (log.f64 x)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (pow.f64 (log.f64 (pow.f64 x x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 (log.f64 x))) (sqrt.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 x) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 x x)) 5/6) (pow.f64 (log.f64 (pow.f64 x x)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (log.f64 (pow.f64 x x)) x) 1/2) (sqrt.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (pow.f64 (log.f64 (pow.f64 x x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 1 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (pow.f64 (log.f64 (pow.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3)) (neg.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2)) (neg.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (pow.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 2) (log.f64 (sqrt.f64 (log.f64 (pow.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/2) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/6) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (pow.f64 (log.f64 (pow.f64 x x)) 3)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (log.f64 (pow.f64 x x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (log.f64 (pow.f64 x x)))) 2)) (cbrt.f64 (log.f64 (log.f64 (pow.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (log.f64 (pow.f64 x x))))) (sqrt.f64 (log.f64 (log.f64 (pow.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (-.f64 (pow.f64 x x) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (-.f64 (pow.f64 x x) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (-.f64 (pow.f64 x x) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 1 (+.f64 1 (-.f64 (pow.f64 x x) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 x x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (pow.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (log.f64 (pow.f64 x x)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (log.f64 (pow.f64 x x)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (log.f64 (pow.f64 x x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (log.f64 (pow.f64 x x)))) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 (pow.f64 x x))) 3) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (log.f64 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (log.f64 x) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (log.f64 x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 x) x 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 x) x (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (pow.f64 x x)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (pow.f64 x x)) 1 (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 (pow.f64 x x)) 1 (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) (sqrt.f64 (log.f64 (pow.f64 x x))) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 x (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 1 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 (cbrt.f64 x) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 (sqrt.f64 x) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 (neg.f64 x) (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (pow.f64 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (pow.f64 x x)) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 (pow.f64 x x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (/.f64 1 (log.f64 (pow.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 2) (/.f64 1 (log.f64 (pow.f64 x x))) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (/.f64 1 (pow.f64 (log.f64 (pow.f64 x x)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3) (/.f64 1 (pow.f64 (log.f64 (pow.f64 x x)) 2)) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (*.f64 (cbrt.f64 (log.f64 x)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (*.f64 (cbrt.f64 (log.f64 x)) x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 x x))) 2) (cbrt.f64 (log.f64 (pow.f64 x x))) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (pow.f64 (log.f64 (pow.f64 x x)) 3/4) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (pow.f64 (*.f64 (log.f64 x) (log.f64 (pow.f64 x x))) 1/2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (pow.f64 (*.f64 (log.f64 x) (log.f64 (pow.f64 x x))) 1/2) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 x)) (*.f64 (sqrt.f64 (log.f64 x)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 x)) (*.f64 (sqrt.f64 (log.f64 x)) x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (pow.f64 (log.f64 (pow.f64 x x)) 1/4) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 3/4) (pow.f64 (log.f64 (pow.f64 x x)) 1/4) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (+.f64 (sqrt.f64 (log.f64 (pow.f64 x x))) 0) (fma.f64 (neg.f64 x) 0 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -1) 0 (log.f64 (pow.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (log.f64 x))) (sqrt.f64 (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (log.f64 x))) (sqrt.f64 (log.f64 x)) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (sqrt.f64 x)) (sqrt.f64 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 x) (sqrt.f64 x)) (sqrt.f64 x) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 5/6) (pow.f64 (log.f64 (pow.f64 x x)) 1/6) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 (pow.f64 x x)) 5/6) (pow.f64 (log.f64 (pow.f64 x x)) 1/6) (*.f64 (neg.f64 x) 0))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 (pow.f64 x x)) x) 1/2) (sqrt.f64 (log.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 (pow.f64 x x)) x) 1/2) (sqrt.f64 (log.f64 x)) (*.f64 (neg.f64 x) 0))))))

simplify220.0ms (2%)

Algorithm
egg-herbie
Rules
2946×fma-neg_binary64
523×fma-def_binary64
411×distribute-rgt-in_binary64
293×unsub-neg_binary64
291×associate--r-_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
033276
173252
2156228
3396228
4912228
52163228
63274228
73504228
83529228
93541228
103541228
115406228
125982228
136066228
146092228
156114228
166116228
176116228
186136228
Stop Event
node limit
Counts
392 → 144
Calls
Call 1
Inputs
(*.f64 (log.f64 x) x)
(*.f64 (log.f64 x) x)
(*.f64 (log.f64 x) x)
(*.f64 (log.f64 x) x)
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 x (log.f64 x)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 x (log.f64 x)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 x (log.f64 x)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 x (log.f64 x)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 x (log.f64 x)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 x (log.f64 x)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 x (log.f64 x)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 x (log.f64 x)))
(+.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)))
(+.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)))
(+.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)))
(+.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)))
Outputs
(*.f64 (log.f64 x) x)
(*.f64 x (log.f64 x))
(*.f64 (log.f64 x) x)
(*.f64 x (log.f64 x))
(*.f64 (log.f64 x) x)
(*.f64 x (log.f64 x))
(*.f64 (log.f64 x) x)
(*.f64 x (log.f64 x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 x (log.f64 x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 x (log.f64 x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 x (log.f64 x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 x)) x))
(*.f64 x (log.f64 x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 x (log.f64 x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 x (log.f64 x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 x (log.f64 x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) x)
(*.f64 x (log.f64 x))
(*.f64 -1 (*.f64 (log.f64 y) x))
(neg.f64 (*.f64 x (log.f64 y)))
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 x (neg.f64 (log.f64 y)))
(*.f64 -1 (*.f64 (log.f64 y) x))
(neg.f64 (*.f64 x (log.f64 y)))
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 x (neg.f64 (log.f64 y)))
(*.f64 -1 (*.f64 (log.f64 y) x))
(neg.f64 (*.f64 x (log.f64 y)))
(*.f64 (log.f64 y) (neg.f64 x))
(*.f64 x (neg.f64 (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 x (log.f64 x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 x (log.f64 x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 x (log.f64 x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 -1 (*.f64 (log.f64 y) x)) (*.f64 x (log.f64 x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 x (log.f64 x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 x (log.f64 x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 x (log.f64 x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 (log.f64 (/.f64 1 y)) x) (*.f64 x (log.f64 x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(+.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)))
(fma.f64 -1 (*.f64 x (log.f64 y)) (*.f64 x (log.f64 x)))
(*.f64 x (+.f64 (neg.f64 (log.f64 y)) (log.f64 x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))

eval170.0ms (1.6%)

Compiler

Compiled 11758 to 4972 computations (57.7% saved)

prune128.0ms (1.2%)

Pruning

25 alts after pruning (15 fresh and 10 done)

PrunedKeptTotal
New6617668
Fresh3811
Picked011
Done1910
Total66525690
Error
0.0b
Counts
690 → 25
Alt Table
Click to see full alt table
StatusErrorProgram
13.5b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
41.7b
(-.f64 (pow.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3/2)) 2) z)
0.2b
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
37.6b
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
50.6b
(-.f64 (+.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2) (*.f64 (neg.f64 (log.f64 y)) x)) z)
37.7b
(-.f64 (pow.f64 (pow.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4) 2) 2) z)
13.5b
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
29.7b
(neg.f64 z)
47.1b
(-.f64 (*.f64 x (neg.f64 (log.f64 y))) z)
13.4b
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
39.2b
(-.f64 (*.f64 x (neg.f64 (expm1.f64 (log1p.f64 (log.f64 (/.f64 y x)))))) z)
33.2b
(-.f64 (*.f64 x (*.f64 1/3 (+.f64 (*.f64 (log.f64 x) 3) (*.f64 (neg.f64 (log.f64 y)) 3)))) z)
13.8b
(-.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 3) z)
31.2b
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))))) z)
17.5b
(-.f64 (*.f64 (*.f64 (log.f64 (/.f64 x y)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 (*.f64 x (cbrt.f64 x))))) (cbrt.f64 x)) z)
33.1b
(-.f64 (fma.f64 (log.f64 x) x (*.f64 (neg.f64 (log.f64 y)) x)) z)
13.8b
(-.f64 (*.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 2) (*.f64 (cbrt.f64 (log.f64 (/.f64 x y))) x)) z)
33.2b
(-.f64 (*.f64 x (*.f64 1/3 (fma.f64 (log.f64 x) 3 (*.f64 (neg.f64 (log.f64 y)) 3)))) z)
26.5b
(-.f64 (*.f64 (*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x))) (cbrt.f64 x)) z)
33.1b
(-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)
39.4b
(-.f64 (*.f64 (*.f64 x (sqrt.f64 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (/.f64 x y)))) z)
31.2b
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
61.0b
(*.f64 (log.f64 (*.f64 y x)) x)
33.2b
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
13.4b
(-.f64 (*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) z)
Compiler

Compiled 374 to 259 computations (30.7% saved)

regimes129.0ms (1.2%)

Counts
41 → 1
Calls
Call 1
Inputs
(neg.f64 z)
(*.f64 (log.f64 (*.f64 y x)) x)
(-.f64 (*.f64 x (neg.f64 (log.f64 y))) z)
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
(-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z)
(-.f64 (-.f64 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1) z)
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
(-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)
(-.f64 (*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) z)
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
(-.f64 (+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x)) z)
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))))) z)
(-.f64 (*.f64 x (*.f64 1/3 (+.f64 (*.f64 (log.f64 x) 3) (*.f64 (neg.f64 (log.f64 y)) 3)))) z)
(-.f64 (*.f64 x (exp.f64 (log.f64 (log.f64 (/.f64 x y))))) z)
(-.f64 (*.f64 x (expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))) z)
(-.f64 (fma.f64 (log.f64 x) x (*.f64 (neg.f64 (log.f64 y)) x)) z)
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
(-.f64 (*.f64 x (neg.f64 (expm1.f64 (log1p.f64 (log.f64 (/.f64 y x)))))) z)
(-.f64 (*.f64 x (pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)) z)
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
(-.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 3) z)
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
(-.f64 (*.f64 (*.f64 (log.f64 (/.f64 x y)) (sqrt.f64 x)) (sqrt.f64 x)) z)
(-.f64 (*.f64 (*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x))) (cbrt.f64 x)) z)
(-.f64 (*.f64 x (*.f64 1/3 (fma.f64 (log.f64 x) 3 (*.f64 (neg.f64 (log.f64 y)) 3)))) z)
(-.f64 (pow.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3/2)) 2) z)
(-.f64 (*.f64 x (-.f64 (log.f64 (sqrt.f64 x)) (log.f64 (/.f64 y (sqrt.f64 x))))) z)
(-.f64 (pow.f64 (pow.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 1/4) 2) 2) z)
(-.f64 (+.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 x))) 2) (*.f64 (neg.f64 (log.f64 y)) x)) z)
(-.f64 (*.f64 (*.f64 x (sqrt.f64 (log.f64 (/.f64 x y)))) (sqrt.f64 (log.f64 (/.f64 x y)))) z)
(-.f64 (*.f64 x (-.f64 (*.f64 2 (log.f64 (cbrt.f64 x))) (log.f64 (/.f64 y (cbrt.f64 x))))) z)
(-.f64 (*.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x y))) 2) (*.f64 (cbrt.f64 (log.f64 (/.f64 x y))) x)) z)
(-.f64 (*.f64 x (+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))) z)
(-.f64 (/.f64 (*.f64 (-.f64 (pow.f64 (log.f64 x) 2) (pow.f64 (log.f64 y) 2)) x) (log.f64 (*.f64 x y))) z)
(-.f64 (*.f64 x (/.f64 (-.f64 (*.f64 (log.f64 x) (log.f64 x)) (*.f64 (log.f64 y) (log.f64 y))) (+.f64 (log.f64 x) (log.f64 y)))) z)
(-.f64 (*.f64 (*.f64 (log.f64 (/.f64 x y)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 (*.f64 x (cbrt.f64 x))))) (cbrt.f64 x)) z)
(-.f64 (*.f64 x (/.f64 (-.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 y) 3)) (+.f64 (*.f64 (log.f64 x) (log.f64 x)) (+.f64 (*.f64 (log.f64 y) (log.f64 y)) (*.f64 (log.f64 x) (log.f64 y)))))) z)
Outputs
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
Calls

6 calls:

22.0ms
y
19.0ms
z
19.0ms
x
19.0ms
(*.f64 x (log.f64 (/.f64 x y)))
18.0ms
(*.f64 x (log.f64 (/.f64 x y)))
Results
ErrorSegmentsBranch
0.2b1x
0.2b1y
0.2b1z
0.2b1(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
0.2b1(*.f64 x (log.f64 (/.f64 x y)))
0.2b1(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 562 to 247 computations (56% saved)

regimes161.0ms (1.5%)

Counts
25 → 2
Calls
Call 1
Inputs
(neg.f64 z)
(*.f64 (log.f64 (*.f64 y x)) x)
(-.f64 (*.f64 x (neg.f64 (log.f64 y))) z)
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
(-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z)
(-.f64 (-.f64 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1) z)
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
(-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)
(-.f64 (*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) z)
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
(-.f64 (+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x)) z)
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))))) z)
(-.f64 (*.f64 x (*.f64 1/3 (+.f64 (*.f64 (log.f64 x) 3) (*.f64 (neg.f64 (log.f64 y)) 3)))) z)
(-.f64 (*.f64 x (exp.f64 (log.f64 (log.f64 (/.f64 x y))))) z)
(-.f64 (*.f64 x (expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))) z)
(-.f64 (fma.f64 (log.f64 x) x (*.f64 (neg.f64 (log.f64 y)) x)) z)
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
(-.f64 (*.f64 x (neg.f64 (expm1.f64 (log1p.f64 (log.f64 (/.f64 y x)))))) z)
(-.f64 (*.f64 x (pow.f64 (sqrt.f64 (log.f64 (/.f64 x y))) 2)) z)
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
(-.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 3) z)
Outputs
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
(-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)
Calls

6 calls:

31.0ms
(*.f64 x (log.f64 (/.f64 x y)))
31.0ms
(*.f64 x (log.f64 (/.f64 x y)))
29.0ms
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
24.0ms
y
24.0ms
x
Results
ErrorSegmentsBranch
0.3b2x
0.3b2y
13.4b1z
4.8b3(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
4.8b3(*.f64 x (log.f64 (/.f64 x y)))
4.8b3(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 299 to 140 computations (53.2% saved)

bsearch3.0ms (0%)

Algorithm
binary-search
Steps
TimeLeftRight
2.0ms
-6.760333774910156e-303
8.356045135359846e-302
Compiler

Compiled 47 to 33 computations (29.8% saved)

regimes122.0ms (1.1%)

Counts
12 → 3
Calls
Call 1
Inputs
(neg.f64 z)
(*.f64 (log.f64 (*.f64 y x)) x)
(-.f64 (*.f64 x (neg.f64 (log.f64 y))) z)
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
(-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z)
(-.f64 (-.f64 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1) z)
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
(-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)
(-.f64 (*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) z)
Outputs
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
(neg.f64 z)
(-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)
Calls

6 calls:

30.0ms
y
23.0ms
x
19.0ms
(*.f64 x (log.f64 (/.f64 x y)))
19.0ms
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
18.0ms
(*.f64 x (log.f64 (/.f64 x y)))
Results
ErrorSegmentsBranch
3.4b3x
5.2b4y
13.4b1z
4.8b3(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
4.8b3(*.f64 x (log.f64 (/.f64 x y)))
4.8b3(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 148 to 78 computations (47.3% saved)

bsearch53.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
23.0ms
-2.5328860145559656e-306
1.2892482841427003e-302
30.0ms
-2.2089761858288727e-118
-3.4371339286541734e-121
Compiler

Compiled 350 to 251 computations (28.3% saved)

regimes98.0ms (0.9%)

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

6 calls:

24.0ms
y
19.0ms
x
15.0ms
(*.f64 x (log.f64 (/.f64 x y)))
15.0ms
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
15.0ms
(*.f64 x (log.f64 (/.f64 x y)))
Results
ErrorSegmentsBranch
3.4b3x
5.2b4y
13.4b1z
4.8b3(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
4.8b3(*.f64 x (log.f64 (/.f64 x y)))
4.8b3(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 126 to 68 computations (46% saved)

bsearch53.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
23.0ms
-2.5328860145559656e-306
1.2892482841427003e-302
30.0ms
-2.2089761858288727e-118
-3.4371339286541734e-121
Compiler

Compiled 332 to 242 computations (27.1% saved)

regimes85.0ms (0.8%)

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

6 calls:

18.0ms
y
16.0ms
x
14.0ms
(*.f64 x (log.f64 (/.f64 x y)))
14.0ms
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
14.0ms
(*.f64 x (log.f64 (/.f64 x y)))
Results
ErrorSegmentsBranch
7.8b3x
11.6b3y
13.4b1z
5.8b3(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
5.8b3(*.f64 x (log.f64 (/.f64 x y)))
5.8b3(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 108 to 64 computations (40.7% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.0738545848768563e+293
+inf
0.0ms
-inf
-2.9101486242232813e+303
Compiler

Compiled 17 to 12 computations (29.4% saved)

regimes25.0ms (0.2%)

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

3 calls:

11.0ms
y
7.0ms
x
4.0ms
z
Results
ErrorSegmentsBranch
27.9b2x
27.9b2y
29.7b1z
Compiler

Compiled 38 to 24 computations (36.8% saved)

bsearch15.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
6.204332984261837e-207
4.545213393719632e-206
Compiler

Compiled 119 to 90 computations (24.4% saved)

regimes12.0ms (0.1%)

Accuracy

Total -32.9b remaining (-110.7%)

Threshold costs -32.9b (-110.7%)

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

3 calls:

4.0ms
x
3.0ms
z
3.0ms
y
Results
ErrorSegmentsBranch
29.7b1x
29.7b1y
29.7b1z
Compiler

Compiled 23 to 16 computations (30.4% saved)

simplify17.0ms (0.2%)

Algorithm
egg-herbie
Rules
18×+-commutative_binary64
17×*-commutative_binary64
17×sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
061232
195232
2120232
3133232
4137232
5138232
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
(if (<=.f64 y 0) (-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z) (-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z))
(if (<=.f64 x -159904519345033504/726838724295606890549323807888004534353641360687318060281490199180639288113397923326191050713763565560762521606266177933534601628614656) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (if (<=.f64 x 9651291528096706/772103322247736428651791941524190166662432288223808740069966728315087660095197093551484618001698015194652854401843307157096133183997320086925557708514169730840749451738610692460887556999562135090788908685580234789131193097780962748024381086918485856402626253175196722230275782071039209488625822100242638638716536487936) (neg.f64 z) (-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)))
(if (<=.f64 x -159904519345033504/726838724295606890549323807888004534353641360687318060281490199180639288113397923326191050713763565560762521606266177933534601628614656) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (if (<=.f64 x 9651291528096706/772103322247736428651791941524190166662432288223808740069966728315087660095197093551484618001698015194652854401843307157096133183997320086925557708514169730840749451738610692460887556999562135090788908685580234789131193097780962748024381086918485856402626253175196722230275782071039209488625822100242638638716536487936) (neg.f64 z) (-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)))
(if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) -inf.0) (-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z) (if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) 199999999999999984924696874707920970120897867915847050405221309697980696558932154585003938846536810050657940462325091296687310550613357744883467580356118956661470790120934939455989945801060127957611687906204227736000759240738169004268617951010459111545827258847272611683204755172652495528787968) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)))
(if (<=.f64 x 16266320402159332/361473786714651839609485931802192366508973300717001923159475447150424810286233407987951861887389439612274926783780351561999781998832434041296198795326329101623141899709787663433296905279066051548640942013290819886814068736) (neg.f64 z) (-.f64 (*.f64 x (neg.f64 (log.f64 y))) z))
(neg.f64 z)
Outputs
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
(if (<=.f64 y 0) (-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z) (-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z))
(if (<=.f64 x -159904519345033504/726838724295606890549323807888004534353641360687318060281490199180639288113397923326191050713763565560762521606266177933534601628614656) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (if (<=.f64 x 9651291528096706/772103322247736428651791941524190166662432288223808740069966728315087660095197093551484618001698015194652854401843307157096133183997320086925557708514169730840749451738610692460887556999562135090788908685580234789131193097780962748024381086918485856402626253175196722230275782071039209488625822100242638638716536487936) (neg.f64 z) (-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)))
(if (<=.f64 x -4997016229532297/22713710134237715329666368996500141698551292521478689383796568724394977753543685103943470334805111423773828800195818060422956300894208) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (if (<=.f64 x 4825645764048353/386051661123868214325895970762095083331216144111904370034983364157543830047598546775742309000849007597326427200921653578548066591998660043462778854257084865420374725869305346230443778499781067545394454342790117394565596548890481374012190543459242928201313126587598361115137891035519604744312911050121319319358268243968) (neg.f64 z) (-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)))
(if (<=.f64 x -159904519345033504/726838724295606890549323807888004534353641360687318060281490199180639288113397923326191050713763565560762521606266177933534601628614656) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (if (<=.f64 x 9651291528096706/772103322247736428651791941524190166662432288223808740069966728315087660095197093551484618001698015194652854401843307157096133183997320086925557708514169730840749451738610692460887556999562135090788908685580234789131193097780962748024381086918485856402626253175196722230275782071039209488625822100242638638716536487936) (neg.f64 z) (-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)))
(if (<=.f64 x -4997016229532297/22713710134237715329666368996500141698551292521478689383796568724394977753543685103943470334805111423773828800195818060422956300894208) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (if (<=.f64 x 4825645764048353/386051661123868214325895970762095083331216144111904370034983364157543830047598546775742309000849007597326427200921653578548066591998660043462778854257084865420374725869305346230443778499781067545394454342790117394565596548890481374012190543459242928201313126587598361115137891035519604744312911050121319319358268243968) (neg.f64 z) (-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)))
(if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) -inf.0) (-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z) (if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) 199999999999999984924696874707920970120897867915847050405221309697980696558932154585003938846536810050657940462325091296687310550613357744883467580356118956661470790120934939455989945801060127957611687906204227736000759240738169004268617951010459111545827258847272611683204755172652495528787968) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)))
(if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) -inf.0) (-.f64 (*.f64 x (log.f64 (*.f64 x y))) z) (if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) 199999999999999984924696874707920970120897867915847050405221309697980696558932154585003938846536810050657940462325091296687310550613357744883467580356118956661470790120934939455989945801060127957611687906204227736000759240738169004268617951010459111545827258847272611683204755172652495528787968) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (-.f64 (*.f64 x (log.f64 (*.f64 x y))) z)))
(if (<=.f64 x 16266320402159332/361473786714651839609485931802192366508973300717001923159475447150424810286233407987951861887389439612274926783780351561999781998832434041296198795326329101623141899709787663433296905279066051548640942013290819886814068736) (neg.f64 z) (-.f64 (*.f64 x (neg.f64 (log.f64 y))) z))
(if (<=.f64 x 4066580100539833/90368446678662959902371482950548091627243325179250480789868861787606202571558351996987965471847359903068731695945087890499945499708108510324049698831582275405785474927446915858324226319766512887160235503322704971703517184) (neg.f64 z) (-.f64 (*.f64 x (neg.f64 (log.f64 y))) z))
(if (<=.f64 x 4066580100539833/90368446678662959902371482950548091627243325179250480789868861787606202571558351996987965471847359903068731695945087890499945499708108510324049698831582275405785474927446915858324226319766512887160235503322704971703517184) (neg.f64 z) (-.f64 (neg.f64 z) (*.f64 x (log.f64 y))))
(neg.f64 z)
Compiler

Compiled 172 to 100 computations (41.9% saved)

soundness0.0ms (0%)

end65.0ms (0.6%)

Compiler

Compiled 154 to 61 computations (60.4% saved)

Profiling

Loading profile data...