Details

Time bar (total: 10.8s)

analyze247.0ms (2.3%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%87.4%0.1%0%12.5%0%5
0%0%74.9%0.1%6.2%18.7%0%6
4.2%3.1%71.8%0.1%6.2%18.7%0%7
11.4%7.8%60.8%0.1%9.4%21.8%0%8
18.8%11.7%50.7%0.1%9.4%28.1%0%9
28.1%17.6%44.9%0.1%9.4%28.1%0%10
38.5%22.8%36.5%0.1%10.1%30.4%0%11
47.4%26.6%29.5%0.1%10.1%33.5%0%12
Compiler

Compiled 12 to 8 computations (33.3% saved)

sample1.8s (16.5%)

Results
1.6s8256×body256valid
179.0ms1029×body256invalid
6.0ms45×body256infinite
Bogosity

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

simplify269.0ms (2.5%)

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)

eval1.0ms (0%)

Compiler

Compiled 11 to 7 computations (36.4% saved)

prune2.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 11 to 7 computations (36.4% saved)

localize22.0ms (0.2%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 7 computations (74.1% saved)

series225.0ms (2.1%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
48.0ms
x
@0
(log.f64 (/.f64 x y))
45.0ms
x
@0
(*.f64 x (log.f64 (/.f64 x y)))
38.0ms
x
@-inf
(log.f64 (/.f64 x y))
27.0ms
y
@-inf
(log.f64 (/.f64 x y))
24.0ms
y
@0
(log.f64 (/.f64 x y))

rewrite60.0ms (0.6%)

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

simplify261.0ms (2.4%)

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

eval10.0ms (0.1%)

Compiler

Compiled 578 to 262 computations (54.7% saved)

prune17.0ms (0.2%)

Pruning

11 alts after pruning (10 fresh and 1 done)

PrunedKeptTotal
New371047
Fresh000
Picked011
Done000
Total371148
Error
0.1b
Counts
48 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
15.8b
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
28.0b
(-.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)
15.9b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
36.4b
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
28.0b
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
15.6b
(-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z)
15.8b
(-.f64 (*.f64 x (+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))) z)
32.5b
(-.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)) z)
37.4b
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
28.0b
(-.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)
42.3b
(-.f64 (*.f64 x (expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))) z)
Compiler

Compiled 353 to 221 computations (37.4% saved)

localize93.0ms (0.9%)

Local error

Found 2 expressions with local error:

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

Compiled 34 to 8 computations (76.5% saved)

series279.0ms (2.6%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
142.0ms
y
@inf
(*.f64 x (neg.f64 (log.f64 (/.f64 y x))))
58.0ms
x
@0
(log.f64 (/.f64 y x))
20.0ms
y
@0
(log.f64 (/.f64 y x))
19.0ms
x
@-inf
(log.f64 (/.f64 y x))
16.0ms
y
@-inf
(log.f64 (/.f64 y x))

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

simplify300.0ms (2.8%)

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

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 31 to 8 computations (74.2% saved)

series119.0ms (1.1%)

Counts
2 → 36
Calls

12 calls:

TimeVariablePointExpression
40.0ms
x
@inf
(-.f64 (log.f64 x) (log.f64 y))
19.0ms
y
@0
(-.f64 (log.f64 x) (log.f64 y))
19.0ms
x
@0
(-.f64 (log.f64 x) (log.f64 y))
12.0ms
x
@-inf
(-.f64 (log.f64 x) (log.f64 y))
10.0ms
y
@-inf
(-.f64 (log.f64 x) (log.f64 y))

rewrite69.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
798×pow1_binary64
740×add-log-exp_binary64
740×log1p-expm1-u_binary64
740×expm1-log1p-u_binary64
725×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0715
114615
2197615
Stop Event
node limit
Counts
2 → 54
Calls
Call 1
Inputs
(-.f64 (log.f64 x) (log.f64 y))
(*.f64 x (-.f64 (log.f64 x) (log.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)))))))))

simplify193.0ms (1.8%)

Algorithm
egg-herbie
Rules
1458×fma-def_binary64
809×fma-neg_binary64
500×associate--r-_binary64
436×unsub-neg_binary64
324×distribute-rgt-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
032412
173348
2148348
3453348
41243348
52978348
64331348
74708348
84764348
94778348
104781348
117692348
127921348
Stop Event
node limit
Counts
90 → 65
Calls
Call 1
Inputs
(-.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 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 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 y)) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
Outputs
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))

localize77.0ms (0.7%)

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))))
15.1b
(log.f64 (/.f64 x y))
Compiler

Compiled 42 to 9 computations (78.6% saved)

series276.0ms (2.6%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
85.0ms
x
@-inf
(log1p.f64 (log.f64 (/.f64 x y)))
63.0ms
y
@inf
(log1p.f64 (log.f64 (/.f64 x y)))
42.0ms
y
@-inf
(log1p.f64 (log.f64 (/.f64 x y)))
31.0ms
x
@inf
(log1p.f64 (log.f64 (/.f64 x y)))
31.0ms
y
@0
(log1p.f64 (log.f64 (/.f64 x y)))

rewrite108.0ms (1%)

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

simplify212.0ms (2%)

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

localize33.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3)))
0.5b
(cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))
0.7b
(pow.f64 (log.f64 (/.f64 x y)) 3)
15.1b
(log.f64 (/.f64 x y))
Compiler

Compiled 47 to 20 computations (57.4% saved)

series10.0ms (0.1%)

Counts
3 → 72
Calls

18 calls:

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

rewrite79.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
809×pow1_binary64
757×add-log-exp_binary64
757×log1p-expm1-u_binary64
757×expm1-log1p-u_binary64
739×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify67.0ms (0.6%)

Algorithm
egg-herbie
Rules
643×distribute-rgt-in_binary64
636×unsub-neg_binary64
617×distribute-lft-in_binary64
536×distribute-rgt-neg-out_binary64
439×distribute-lft-neg-out_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
039840
1100780
2243780
3961780
44828780
Stop Event
node limit
Counts
133 → 81
Calls
Call 1
Inputs
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) (pow.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) 2))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) (pow.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) 2))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) (pow.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) 2))
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) (pow.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) 2))
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3)
(+.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
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) (pow.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) 2))
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) (pow.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) 2))
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) (pow.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) 2))
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(*.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) (pow.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) 2))
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3)
(pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3)
(pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))) 3)
(+.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)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x)))
(*.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 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))

localize40.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.4b
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))
0.4b
(pow.f64 (cbrt.f64 (/.f64 x y)) 2)
3.4b
(log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))
15.4b
(cbrt.f64 (/.f64 x y))
Compiler

Compiled 77 to 27 computations (64.9% saved)

series32.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
x
@-inf
(log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2))
2.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))))
2.0ms
y
@-inf
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x y)) 2)) (log.f64 (cbrt.f64 (/.f64 x y))))

rewrite134.0ms (1.2%)

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

simplify20.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

eval255.0ms (2.4%)

Compiler

Compiled 12213 to 5019 computations (58.9% saved)

prune228.0ms (2.1%)

Pruning

15 alts after pruning (11 fresh and 4 done)

PrunedKeptTotal
New6448652
Fresh235
Picked101
Done145
Total64815663
Error
0.0b
Counts
663 → 15
Alt Table
Click to see full alt table
StatusErrorProgram
38.0b
(-.f64 (*.f64 x (neg.f64 (pow.f64 (pow.f64 (log.f64 (/.f64 y x)) 3) 1/3))) z)
28.0b
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
36.4b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3))) z)
15.8b
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
15.9b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
36.4b
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
15.6b
(-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z)
31.2b
(-.f64 (/.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))))) z)
32.5b
(-.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)) z)
15.8b
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
37.4b
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
15.8b
(-.f64 (*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) z)
28.0b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3))) z)
28.0b
(-.f64 (+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x)) z)
32.5b
(-.f64 (cbrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3))) z)
Compiler

Compiled 407 to 289 computations (29% saved)

localize33.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 46 to 16 computations (65.2% saved)

series69.0ms (0.6%)

Counts
3 → 0
Calls

18 calls:

TimeVariablePointExpression
48.0ms
y
@0
(*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)
2.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
y
@inf
(*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)
1.0ms
y
@-inf
(*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))

rewrite139.0ms (1.3%)

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
0933
118323
2225623
Stop Event
node limit
Counts
3 → 53
Calls
Call 1
Inputs
(*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)
(*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))
(log.f64 (cbrt.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 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)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (/.f64 x y) 1/6)) (log.f64 (pow.f64 (/.f64 x y) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y))) 2)) (log.f64 (cbrt.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (cbrt.f64 (/.f64 x y)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (cbrt.f64 x)) (log.f64 (cbrt.f64 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (/.f64 x y)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (cbrt.f64 (/.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (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 *.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 (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/3 (log.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (cbrt.f64 (/.f64 x y)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (cbrt.f64 (/.f64 x y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (cbrt.f64 (/.f64 x y)))))))))

simplify16.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize78.0ms (0.7%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 3 (log.f64 (/.f64 x y)))
0.3b
(*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y)))))
0.4b
(*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))
15.1b
(log.f64 (/.f64 x y))
Compiler

Compiled 51 to 24 computations (52.9% saved)

series13.0ms (0.1%)

Counts
3 → 72
Calls

18 calls:

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

rewrite158.0ms (1.5%)

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 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y)))))
(*.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) 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 (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))))))))

simplify183.0ms (1.7%)

Algorithm
egg-herbie
Rules
2831×fma-neg_binary64
581×unsub-neg_binary64
552×fma-def_binary64
434×distribute-rgt-in_binary64
266×distribute-lft-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
037792
195720
2214720
3544720
41276720
52700720
64748720
75562720
85914720
95992720
106016720
116020720
126036720
136038720
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 (+.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)
(*.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))))
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)))
(*.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)

localize15.0ms (0.1%)

Local error

Found 3 expressions with local error:

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

Compiled 44 to 10 computations (77.3% saved)

series8.0ms (0.1%)

Counts
3 → 56
Calls

15 calls:

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

rewrite181.0ms (1.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))))))))

simplify235.0ms (2.2%)

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

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
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)
0.3b
(*.f64 x (log.f64 (/.f64 x y)))
15.1b
(log.f64 (/.f64 x y))
Compiler

Compiled 47 to 13 computations (72.3% saved)

series13.0ms (0.1%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
3.0ms
x
@0
(pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2)
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)
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)

rewrite113.0ms (1%)

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

simplify246.0ms (2.3%)

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

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 x (cbrt.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)))
0.3b
(cbrt.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3))
0.3b
(-.f64 (log.f64 x) (log.f64 y))
0.4b
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
Compiler

Compiled 53 to 21 computations (60.4% saved)

series11.0ms (0.1%)

Counts
3 → 64
Calls

18 calls:

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

rewrite73.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
967×pow1_binary64
905×add-log-exp_binary64
905×log1p-expm1-u_binary64
905×expm1-log1p-u_binary64
96×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify68.0ms (0.6%)

Algorithm
egg-herbie
Rules
887×unsub-neg_binary64
566×distribute-rgt-neg-out_binary64
492×associate-*l*_binary64
433×associate-*r*_binary64
405×fma-def_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
038696
1101632
2258632
31234632
45398632
Stop Event
node limit
Counts
155 → 106
Calls
Call 1
Inputs
(pow.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) 3)
(pow.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) 3)
(pow.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) 3)
(pow.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) 3)
(pow.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) 3)
(pow.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) 3)
(pow.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) 3)
(pow.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) 3)
(pow.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) 3)
(pow.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) 3)
(pow.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) 3)
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 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 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 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 y)) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
Outputs
(pow.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) 3)
(pow.f64 (-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 y)) 3)
(pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3)
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y))))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (log.f64 y))
(-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)))
(-.f64 (log.f64 x) (log.f64 y))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (*.f64 -1 (log.f64 (/.f64 1 y)))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1))) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))

eval350.0ms (3.2%)

Compiler

Compiled 8913 to 3845 computations (56.9% saved)

prune174.0ms (1.6%)

Pruning

18 alts after pruning (11 fresh and 7 done)

PrunedKeptTotal
New5479556
Fresh426
Picked101
Done178
Total55318571
Error
0.0b
Counts
571 → 18
Alt Table
Click to see full alt table
StatusErrorProgram
37.4b
(-.f64 (-.f64 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1) z)
15.6b
(-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z)
42.6b
(-.f64 (*.f64 x (*.f64 1/3 (log.f64 (pow.f64 (/.f64 x y) 3)))) z)
15.8b
(-.f64 (*.f64 x (*.f64 (*.f64 (log.f64 (/.f64 x y)) 1/3) 3)) z)
15.8b
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
0.2b
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
36.4b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3))) z)
15.8b
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
15.9b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
36.4b
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
28.0b
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
28.0b
(-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)
37.2b
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
37.4b
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
15.8b
(-.f64 (*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) z)
32.5b
(-.f64 (cbrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3))) z)
32.5b
(-.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)) z)
26.0b
(-.f64 (*.f64 (*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x))) (cbrt.f64 x)) z)
Compiler

Compiled 418 to 296 computations (29.2% saved)

localize30.0ms (0.3%)

Local error

Found 4 expressions with local error:

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

Compiled 52 to 17 computations (67.3% saved)

series12.0ms (0.1%)

Counts
4 → 0
Calls

18 calls:

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

rewrite105.0ms (1%)

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 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)
(/.f64 (cbrt.f64 x) (cbrt.f64 y))
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 (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))))))))
((#(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))))))))

simplify13.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

localize16.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 7 computations (74.1% saved)

series37.0ms (0.3%)

Counts
2 → 48
Calls

12 calls:

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

rewrite79.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
558×pow1_binary64
511×add-log-exp_binary64
511×log1p-expm1-u_binary64
511×expm1-log1p-u_binary64
500×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0615
111615
2138915
Stop Event
node limit
Counts
2 → 35
Calls
Call 1
Inputs
(log.f64 (*.f64 x y))
(*.f64 (log.f64 (*.f64 x y)) x)
Outputs
((#(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 (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 (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)))))))))

simplify252.0ms (2.3%)

Algorithm
egg-herbie
Rules
1519×fma-neg_binary64
867×fma-def_binary64
535×associate--r-_binary64
387×associate--r+_binary64
381×associate--l-_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
034456
177456
2132456
3369456
41047456
52103456
63906456
74167456
84297456
94325456
104339456
114341456
127781456
137982456
Stop Event
node limit
Counts
83 → 45
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)
Outputs
(+.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 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y)))
(+.f64 (log.f64 y) (log.f64 x))
(+.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 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 y) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x)))
(+.f64 (log.f64 y) (log.f64 x))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 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 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 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 (+.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 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))

localize25.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(*.f64 x (log.f64 (*.f64 x y)))
4.3b
(-.f64 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1)
12.0b
(log.f64 (*.f64 x y))
Compiler

Compiled 50 to 18 computations (64% saved)

series5.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite102.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
938×pow1_binary64
872×add-log-exp_binary64
872×log1p-expm1-u_binary64
872×expm1-log1p-u_binary64
98×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0930
119218
2261818
Stop Event
node limit
Counts
2 → 85
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1)
(*.f64 x (log.f64 (*.f64 x y)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (fma.f64 x (log.f64 (*.f64 x y)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (log.f64 (*.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (fma.f64 x (log.f64 (*.f64 x y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) 1)))) (#(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 1 (*.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 (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 (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 (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 (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 (*.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 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) -1) (/.f64 1 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) -1) (/.f64 1 (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1)) 1) (-.f64 (sqrt.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1)) 1))))) (#(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)) (pow.f64 (cbrt.f64 x) 2)) (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 1 (/.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2)) (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2) (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (-.f64 1 (*.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) -1) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) -1) (-.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) -1)) (neg.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) -1)) (neg.f64 (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) 3)) (+.f64 1 (-.f64 (*.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) (fma.f64 x (log.f64 (*.f64 x y)) -1)) (fma.f64 x (log.f64 (*.f64 x y)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) (fma.f64 x (log.f64 (*.f64 x y)) -1))) (-.f64 1 (fma.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 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 fma.f64 1 (fma.f64 x (log.f64 (*.f64 x y)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2)) (cbrt.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1)) (sqrt.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1)) -1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (fma.f64 x (log.f64 (*.f64 x y)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (log.f64 (*.f64 x y))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (fma.f64 x (log.f64 (*.f64 x y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) 1)))) (#(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 (fma.f64 x (log.f64 (*.f64 x y)) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2))) (/.f64 1 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2)) (/.f64 1 (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2)) (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2) (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (-.f64 1 (*.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) -1) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) -1) (-.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 3) -1)) (neg.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2) -1)) (neg.f64 (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) 3)) (+.f64 1 (-.f64 (*.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) (fma.f64 x (log.f64 (*.f64 x y)) -1)) (fma.f64 x (log.f64 (*.f64 x y)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 (fma.f64 x (log.f64 (*.f64 x y)) -1) (fma.f64 x (log.f64 (*.f64 x y)) -1))) (-.f64 1 (fma.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 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 fma.f64 1 (fma.f64 x (log.f64 (*.f64 x y)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1) 2)) (cbrt.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1)) (sqrt.f64 (fma.f64 x (log.f64 (*.f64 x y)) 1)) -1)))))

simplify257.0ms (2.4%)

Algorithm
egg-herbie
Rules
1519×fma-neg_binary64
867×fma-def_binary64
534×associate--r-_binary64
387×associate--r+_binary64
386×associate--l-_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
034528
177528
2132528
3369528
41048528
52126528
63934528
74186528
84316528
94344528
104358528
114360528
127797528
137998528
Stop Event
node limit
Counts
133 → 59
Calls
Call 1
Inputs
(*.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 (+.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)
Outputs
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 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 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 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 (+.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 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (log.f64 y) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 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 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (*.f64 -1 y))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 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 (+.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 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 y))) (log.f64 x)) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 y) (log.f64 x)))

localize22.0ms (0.2%)

Local error

Found 3 expressions with local error:

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

Compiled 38 to 9 computations (76.3% saved)

series8.0ms (0.1%)

Counts
3 → 60
Calls

15 calls:

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

rewrite106.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
951×pow1_binary64
880×add-log-exp_binary64
880×log1p-expm1-u_binary64
880×expm1-log1p-u_binary64
91×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify247.0ms (2.3%)

Algorithm
egg-herbie
Rules
3223×fma-neg_binary64
692×fma-def_binary64
423×associate--r-_binary64
371×unsub-neg_binary64
313×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
042480
1118480
2270480
3863480
42043480
53797480
64360480
74414480
84427480
94437480
104437480
116854480
127386480
137526480
147570480
157576480
167578480
177669480
187689480
Stop Event
node limit
Counts
138 → 93
Calls
Call 1
Inputs
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 (-.f64 (log.f64 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 y)) x)
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (*.f64 -1 (log.f64 y))) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (*.f64 -1 (log.f64 y))) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (*.f64 -1 (log.f64 y))) x))
(*.f64 -1 (*.f64 (-.f64 (*.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))) (*.f64 -1 (log.f64 y))) x))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (log.f64 y) x))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (log.f64 y) x))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (log.f64 y) x))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (log.f64 y) x))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 (log.f64 y) x)
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)
(*.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)
Outputs
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (log.f64 x) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) x)
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 y)) 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))) (*.f64 -1 (log.f64 y))) 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))) (*.f64 -1 (log.f64 y))) 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))) (*.f64 -1 (log.f64 y))) 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))) (*.f64 -1 (log.f64 y))) x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (log.f64 y) x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (log.f64 y) x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (log.f64 y) x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (log.f64 y) x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x)))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(-.f64 (*.f64 x (log.f64 x)) (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x))
(*.f64 x (-.f64 (log.f64 x) (log.f64 y)))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 (log.f64 y) x)
(*.f64 x (log.f64 y))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x))
(*.f64 x (log.f64 y))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x))
(*.f64 x (log.f64 y))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x))
(*.f64 x (log.f64 y))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 y)) x))
(*.f64 x (log.f64 y))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)
(*.f64 x (log.f64 y))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)
(*.f64 x (log.f64 y))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)
(*.f64 x (log.f64 y))
(*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 y))) (log.f64 -1)) x)
(*.f64 x (log.f64 y))
(*.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))

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)
0.3b
(*.f64 x (log.f64 (/.f64 x y)))
15.1b
(log.f64 (/.f64 x y))
39.5b
(cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3))
Compiler

Compiled 48 to 16 computations (66.7% saved)

series83.0ms (0.8%)

Counts
2 → 48
Calls

12 calls:

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

rewrite70.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
822×pow1_binary64
770×add-log-exp_binary64
770×log1p-expm1-u_binary64
770×expm1-log1p-u_binary64
750×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0921
119321
2216021
Stop Event
node limit
Counts
2 → 54
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3))
(pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)
Outputs
((#(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 *.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 (log.f64 (pow.f64 (/.f64 x y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (pow.f64 (/.f64 x y) x)))))) (#(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 (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 (log.f64 (pow.f64 (/.f64 x y) x))) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) (pow.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) 2) (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))))))) (#(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 (log.f64 (pow.f64 (/.f64 x y) x))) (sqrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2) 1/3) (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (log.f64 (pow.f64 (/.f64 x y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3/2) 1/3) (pow.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3/2) 1/3))))) (#(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)) (pow.f64 (cbrt.f64 x) 2)) (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 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 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 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (log.f64 (/.f64 x y)) (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (/.f64 x y)) (*.f64 x (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (pow.f64 (/.f64 x y) x)) (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2) (log.f64 (pow.f64 (/.f64 x y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) 2) (*.f64 (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) (*.f64 (sqrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3) (pow.f64 (log.f64 (/.f64 x y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3/2) (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) 2) 3) (log.f64 (pow.f64 (/.f64 x y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) 3) (pow.f64 (sqrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2) x) (log.f64 (/.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2) (log.f64 (/.f64 x y))) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2) 1) (log.f64 (pow.f64 (/.f64 x y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2) (pow.f64 (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))) 2)) (cbrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 2) (sqrt.f64 (log.f64 (pow.f64 (/.f64 x y) x)))) (sqrt.f64 (log.f64 (pow.f64 (/.f64 x y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (log.f64 (pow.f64 (/.f64 x y) x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (log.f64 (pow.f64 (/.f64 x y) x)))))))))

simplify64.0ms (0.6%)

Algorithm
egg-herbie
Rules
729×unswap-sqr_binary64
495×distribute-neg-out_binary64
484×unsub-neg_binary64
431×fma-def_binary64
401×*-commutative_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
048804
1130764
2449764
32380756
45516672
Stop Event
node limit
Counts
102 → 69
Calls
Call 1
Inputs
(*.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 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) (*.f64 (cbrt.f64 -1) x)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) (*.f64 (cbrt.f64 -1) x)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) (*.f64 (cbrt.f64 -1) x)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) (*.f64 (cbrt.f64 -1) 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)
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) 2) (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) (pow.f64 x 3)))
(*.f64 (pow.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) 2) (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) (pow.f64 x 3)))
(*.f64 (pow.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) 2) (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) (pow.f64 x 3)))
(*.f64 (pow.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) 2) (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) (pow.f64 x 3)))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3) (pow.f64 x 3))
Outputs
(*.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 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) (*.f64 (cbrt.f64 -1) x)))
(neg.f64 (*.f64 (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (/.f64 -1 y))) (*.f64 x (cbrt.f64 -1))))
(*.f64 (-.f64 (log.f64 (/.f64 -1 y)) (log.f64 (/.f64 -1 x))) (neg.f64 (*.f64 x (cbrt.f64 -1))))
(*.f64 x (*.f64 (-.f64 (log.f64 (/.f64 -1 y)) (log.f64 (/.f64 -1 x))) (neg.f64 (cbrt.f64 -1))))
(*.f64 (*.f64 x (cbrt.f64 -1)) (-.f64 (log.f64 (/.f64 -1 x)) (log.f64 (/.f64 -1 y))))
(*.f64 x (*.f64 (cbrt.f64 -1) (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) (*.f64 (cbrt.f64 -1) x)))
(neg.f64 (*.f64 (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (/.f64 -1 y))) (*.f64 x (cbrt.f64 -1))))
(*.f64 (-.f64 (log.f64 (/.f64 -1 y)) (log.f64 (/.f64 -1 x))) (neg.f64 (*.f64 x (cbrt.f64 -1))))
(*.f64 x (*.f64 (-.f64 (log.f64 (/.f64 -1 y)) (log.f64 (/.f64 -1 x))) (neg.f64 (cbrt.f64 -1))))
(*.f64 (*.f64 x (cbrt.f64 -1)) (-.f64 (log.f64 (/.f64 -1 x)) (log.f64 (/.f64 -1 y))))
(*.f64 x (*.f64 (cbrt.f64 -1) (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) (*.f64 (cbrt.f64 -1) x)))
(neg.f64 (*.f64 (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (/.f64 -1 y))) (*.f64 x (cbrt.f64 -1))))
(*.f64 (-.f64 (log.f64 (/.f64 -1 y)) (log.f64 (/.f64 -1 x))) (neg.f64 (*.f64 x (cbrt.f64 -1))))
(*.f64 x (*.f64 (-.f64 (log.f64 (/.f64 -1 y)) (log.f64 (/.f64 -1 x))) (neg.f64 (cbrt.f64 -1))))
(*.f64 (*.f64 x (cbrt.f64 -1)) (-.f64 (log.f64 (/.f64 -1 x)) (log.f64 (/.f64 -1 y))))
(*.f64 x (*.f64 (cbrt.f64 -1) (-.f64 (log.f64 y) (log.f64 x))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) (*.f64 (cbrt.f64 -1) x)))
(neg.f64 (*.f64 (fma.f64 -1 (log.f64 (/.f64 -1 x)) (log.f64 (/.f64 -1 y))) (*.f64 x (cbrt.f64 -1))))
(*.f64 (-.f64 (log.f64 (/.f64 -1 y)) (log.f64 (/.f64 -1 x))) (neg.f64 (*.f64 x (cbrt.f64 -1))))
(*.f64 x (*.f64 (-.f64 (log.f64 (/.f64 -1 y)) (log.f64 (/.f64 -1 x))) (neg.f64 (cbrt.f64 -1))))
(*.f64 (*.f64 x (cbrt.f64 -1)) (-.f64 (log.f64 (/.f64 -1 x)) (log.f64 (/.f64 -1 y))))
(*.f64 x (*.f64 (cbrt.f64 -1) (-.f64 (log.f64 y) (log.f64 x))))
(*.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 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) x)
(*.f64 x (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 y))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) 2) (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) (pow.f64 x 3)))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) 2) (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) (pow.f64 x 3)))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) 2) (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) (pow.f64 x 3)))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 x) (*.f64 -1 (log.f64 y))) 2) (*.f64 (+.f64 (*.f64 -1 (log.f64 y)) (log.f64 x)) (pow.f64 x 3)))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 1 y)) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (fma.f64 -1 (log.f64 y) (log.f64 x)) 3) (pow.f64 x 3))
(*.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3) (pow.f64 x 3))
(pow.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) 3)
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))) 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))) 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))) 3))
(*.f64 (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (*.f64 -1 x))) 3) (pow.f64 x 3))
(*.f64 (pow.f64 x 3) (pow.f64 (+.f64 (log.f64 (/.f64 -1 y)) (log.f64 (neg.f64 x))) 3))

eval143.0ms (1.3%)

Compiler

Compiled 6695 to 2827 computations (57.8% saved)

prune211.0ms (2%)

Pruning

19 alts after pruning (7 fresh and 12 done)

PrunedKeptTotal
New4183421
Fresh246
Picked011
Done01111
Total42019439
Error
0.0b
Counts
439 → 19
Alt Table
Click to see full alt table
StatusErrorProgram
37.4b
(-.f64 (-.f64 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1) z)
15.6b
(-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z)
27.9b
(-.f64 (fma.f64 (log.f64 x) x (*.f64 (log.f64 y) (neg.f64 x))) z)
28.0b
(-.f64 (-.f64 (*.f64 x (log.f64 x)) (*.f64 x (log.f64 y))) z)
42.6b
(-.f64 (*.f64 x (*.f64 1/3 (log.f64 (pow.f64 (/.f64 x y) 3)))) z)
15.8b
(-.f64 (*.f64 x (*.f64 (*.f64 (log.f64 (/.f64 x y)) 1/3) 3)) z)
15.8b
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
0.2b
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
15.8b
(-.f64 (*.f64 x (*.f64 (log.f64 (cbrt.f64 (/.f64 x y))) 3)) z)
32.5b
(-.f64 (cbrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3))) z)
36.4b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3))) z)
15.8b
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
35.8b
(-.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) (fma.f64 (neg.f64 (log.f64 y)) x (*.f64 x (log.f64 y)))) z)
15.9b
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
36.4b
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
28.0b
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
37.2b
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
37.4b
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
32.5b
(-.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)) z)
Compiler

Compiled 283 to 193 computations (31.8% saved)

regimes138.0ms (1.3%)

Counts
31 → 1
Calls
Call 1
Inputs
(-.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 (*.f64 (log.f64 (/.f64 x y)) 1/3) 3)) 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 (*.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 x (*.f64 1/3 (log.f64 (pow.f64 (/.f64 x y) 3)))) z)
(-.f64 (+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x)) z)
(-.f64 (*.f64 x (expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))) z)
(-.f64 (fma.f64 (log.f64 x) x (*.f64 (log.f64 y) (neg.f64 x))) z)
(-.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)) z)
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
(-.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)) z)
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
(-.f64 (*.f64 x (neg.f64 (pow.f64 (pow.f64 (log.f64 (/.f64 y x)) 3) 1/3))) z)
(-.f64 (*.f64 (*.f64 (log.f64 (/.f64 x y)) (cbrt.f64 (*.f64 x x))) (cbrt.f64 x)) z)
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (-.f64 (log.f64 x) (log.f64 y)) 3))) z)
(-.f64 (cbrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3))) z)
(-.f64 (cbrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3))) z)
(-.f64 (cbrt.f64 (*.f64 (pow.f64 (log.f64 (/.f64 x y)) 3) (pow.f64 x 3))) z)
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y))) 3))) 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 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 (-.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))))) z)
(-.f64 (fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) (cbrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) (fma.f64 (neg.f64 (log.f64 y)) x (*.f64 x (log.f64 y)))) 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:

25.0ms
(*.f64 x (log.f64 (/.f64 x y)))
23.0ms
(*.f64 x (log.f64 (/.f64 x y)))
18.0ms
x
17.0ms
y
16.0ms
z
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 463 to 213 computations (54% saved)

regimes149.0ms (1.4%)

Counts
18 → 2
Calls
Call 1
Inputs
(-.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 (*.f64 (log.f64 (/.f64 x y)) 1/3) 3)) 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 (*.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 x (*.f64 1/3 (log.f64 (pow.f64 (/.f64 x y) 3)))) z)
(-.f64 (+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x)) z)
(-.f64 (*.f64 x (expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))) z)
(-.f64 (fma.f64 (log.f64 x) x (*.f64 (log.f64 y) (neg.f64 x))) z)
(-.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)) z)
(-.f64 (*.f64 x (cbrt.f64 (pow.f64 (log.f64 (/.f64 x y)) 3))) z)
(-.f64 (cbrt.f64 (pow.f64 (*.f64 x (log.f64 (/.f64 x y))) 3)) z)
(-.f64 (pow.f64 (sqrt.f64 (*.f64 x (log.f64 (/.f64 x y)))) 2) z)
Outputs
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
(-.f64 (fma.f64 (log.f64 x) x (*.f64 (log.f64 y) (neg.f64 x))) z)
Calls

6 calls:

29.0ms
z
25.0ms
(*.f64 x (log.f64 (/.f64 x y)))
23.0ms
(*.f64 x (log.f64 (/.f64 x y)))
23.0ms
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
23.0ms
x
Results
ErrorSegmentsBranch
0.3b2x
0.3b2y
14.5b3z
7.5b3(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
7.5b3(*.f64 x (log.f64 (/.f64 x y)))
7.5b3(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 236 to 120 computations (49.2% saved)

bsearch7.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
6.0ms
-9.406013548728566e-307
5.231174667052207e-306
Compiler

Compiled 47 to 33 computations (29.8% saved)

regimes172.0ms (1.6%)

Counts
13 → 2
Calls
Call 1
Inputs
(-.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 (*.f64 (log.f64 (/.f64 x y)) 1/3) 3)) 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 (*.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 x (*.f64 1/3 (log.f64 (pow.f64 (/.f64 x y) 3)))) z)
(-.f64 (+.f64 (*.f64 (log.f64 x) x) (*.f64 (neg.f64 (log.f64 y)) x)) z)
(-.f64 (*.f64 x (expm1.f64 (log1p.f64 (log.f64 (/.f64 x y))))) z)
Outputs
(-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z)
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
Calls

5 calls:

41.0ms
z
36.0ms
(*.f64 x (log.f64 (/.f64 x y)))
36.0ms
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
29.0ms
y
23.0ms
x
Results
ErrorSegmentsBranch
0.4b2x
0.4b2y
14.5b3z
7.5b3(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
7.5b3(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 172 to 94 computations (45.3% saved)

bsearch5.0ms (0%)

Algorithm
binary-search
Steps
TimeLeftRight
4.0ms
-4.1153606331183983e-305
3.215541418564486e-308
Compiler

Compiled 45 to 32 computations (28.9% saved)

regimes159.0ms (1.5%)

Counts
9 → 3
Calls
Call 1
Inputs
(-.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 (*.f64 (log.f64 (/.f64 x y)) 1/3) 3)) 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 (*.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 (neg.f64 (log.f64 (/.f64 y x)))) z)
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
(-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)
Calls

5 calls:

36.0ms
x
35.0ms
z
29.0ms
(*.f64 x (log.f64 (/.f64 x y)))
29.0ms
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
23.0ms
y
Results
ErrorSegmentsBranch
6.6b3x
8.0b2y
14.5b3z
7.5b3(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
7.5b3(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 127 to 71 computations (44.1% saved)

bsearch11.0ms (0.1%)

Algorithm
binary-search
Steps
TimeLeftRight
5.0ms
-2.8894313010011984e-305
-9.406013548728566e-307
6.0ms
-2.1925118688639055e-247
-2.316072019851303e-263
Compiler

Compiled 67 to 46 computations (31.3% saved)

regimes96.0ms (0.9%)

Counts
6 → 3
Calls
Call 1
Inputs
(-.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 (*.f64 (log.f64 (/.f64 x y)) 1/3) 3)) z)
(-.f64 (*.f64 x (*.f64 1/3 (*.f64 3 (log.f64 (/.f64 x y))))) z)
Outputs
(-.f64 (-.f64 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1) z)
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
Calls

5 calls:

26.0ms
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
25.0ms
(*.f64 x (log.f64 (/.f64 x y)))
22.0ms
z
14.0ms
x
5.0ms
y
Results
ErrorSegmentsBranch
12.8b3x
15.6b1y
14.5b3z
7.5b3(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
7.5b3(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 96 to 56 computations (41.7% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.5123964217846704e+290
+inf
0.0ms
-inf
-5.694302411415355e+307
Compiler

Compiled 17 to 12 computations (29.4% saved)

regimes45.0ms (0.4%)

Accuracy

Total -37.9b remaining (-503.8%)

Threshold costs -37.9b (-503.8%)

Counts
3 → 3
Calls
Call 1
Inputs
(-.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)
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

5 calls:

11.0ms
z
10.0ms
x
9.0ms
(*.f64 x (log.f64 (/.f64 x y)))
9.0ms
(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
4.0ms
y
Results
ErrorSegmentsBranch
12.8b3x
15.6b1y
14.5b3z
7.5b3(-.f64 (*.f64 x (log.f64 (/.f64 x y))) z)
7.5b3(*.f64 x (log.f64 (/.f64 x y)))
Compiler

Compiled 60 to 38 computations (36.7% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
1.5123964217846704e+290
+inf
0.0ms
-inf
-5.694302411415355e+307
Compiler

Compiled 17 to 12 computations (29.4% saved)

simplify20.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
064296
1101296
2136296
3156296
4163296
5164296
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 x 0) (-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z) (-.f64 (fma.f64 (log.f64 x) x (*.f64 (log.f64 y) (neg.f64 x))) z))
(if (<=.f64 y 0) (-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z) (-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z))
(if (<=.f64 x -1612226962694291/16122269626942909129404900662735492142298807557254685123533957184651913530173488143140175045399694454793530120643833272670970079330526292030350920973600450955456136596649325078391464772840162385651374295294530896122681527488756156580761624107880751845994219387748352) (-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z) (if (<=.f64 x -6325070415853457/6325070415853456823515479584966165845298645305129441198653167438357198111499854590373761990669910140474596183259900372230931523043306046152094168748148078435047419508642698792639590866940413010663742739952273283392562733857021646831815729864036236135650314266011211548510419206725953204130822734645187695728365866909171712) (-.f64 (*.f64 (log.f64 (*.f64 x y)) x) 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 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1) z) (if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) 200000000000000012345566705573431377398874462192602251662010570107762675307934311788507834188892959338862091690298252262069181570867912343476423070733974457108518204218323764372269486067627507254546771920492554489989692515780696061630802248473408403824265151663702610072177901842265203015680) (-.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 (log.f64 (*.f64 x y)) x) z) (if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) 200000000000000012345566705573431377398874462192602251662010570107762675307934311788507834188892959338862091690298252262069181570867912343476423070733974457108518204218323764372269486067627507254546771920492554489989692515780696061630802248473408403824265151663702610072177901842265203015680) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)))
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
Outputs
(-.f64 (*.f64 x (*.f64 (log.f64 (/.f64 (cbrt.f64 x) (cbrt.f64 y))) 3)) z)
(if (<=.f64 x 0) (-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z) (-.f64 (fma.f64 (log.f64 x) x (*.f64 (log.f64 y) (neg.f64 x))) z))
(if (<=.f64 x 0) (-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z) (-.f64 (fma.f64 (log.f64 x) x (*.f64 (neg.f64 x) (log.f64 y))) z))
(if (<=.f64 y 0) (-.f64 (*.f64 x (-.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 y)))) z) (-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z))
(if (<=.f64 x -1612226962694291/16122269626942909129404900662735492142298807557254685123533957184651913530173488143140175045399694454793530120643833272670970079330526292030350920973600450955456136596649325078391464772840162385651374295294530896122681527488756156580761624107880751845994219387748352) (-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z) (if (<=.f64 x -6325070415853457/6325070415853456823515479584966165845298645305129441198653167438357198111499854590373761990669910140474596183259900372230931523043306046152094168748148078435047419508642698792639590866940413010663742739952273283392562733857021646831815729864036236135650314266011211548510419206725953204130822734645187695728365866909171712) (-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z) (-.f64 (*.f64 x (-.f64 (log.f64 x) (log.f64 y))) z)))
(if (<=.f64 x -1612226962694291/16122269626942909129404900662735492142298807557254685123533957184651913530173488143140175045399694454793530120643833272670970079330526292030350920973600450955456136596649325078391464772840162385651374295294530896122681527488756156580761624107880751845994219387748352) (-.f64 (*.f64 x (neg.f64 (log.f64 (/.f64 y x)))) z) (if (<=.f64 x -6325070415853457/6325070415853456823515479584966165845298645305129441198653167438357198111499854590373761990669910140474596183259900372230931523043306046152094168748148078435047419508642698792639590866940413010663742739952273283392562733857021646831815729864036236135650314266011211548510419206725953204130822734645187695728365866909171712) (-.f64 (*.f64 x (log.f64 (*.f64 x y))) 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 (+.f64 1 (*.f64 x (log.f64 (*.f64 x y)))) 1) z) (if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) 200000000000000012345566705573431377398874462192602251662010570107762675307934311788507834188892959338862091690298252262069181570867912343476423070733974457108518204218323764372269486067627507254546771920492554489989692515780696061630802248473408403824265151663702610072177901842265203015680) (-.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 (+.f64 (*.f64 x (log.f64 (*.f64 x y))) 1) -1) z) (if (<=.f64 (*.f64 x (log.f64 (/.f64 x y))) 200000000000000012345566705573431377398874462192602251662010570107762675307934311788507834188892959338862091690298252262069181570867912343476423070733974457108518204218323764372269486067627507254546771920492554489989692515780696061630802248473408403824265151663702610072177901842265203015680) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (-.f64 (*.f64 x (log.f64 (*.f64 x 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))) 200000000000000012345566705573431377398874462192602251662010570107762675307934311788507834188892959338862091690298252262069181570867912343476423070733974457108518204218323764372269486067627507254546771920492554489989692515780696061630802248473408403824265151663702610072177901842265203015680) (-.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))) 200000000000000012345566705573431377398874462192602251662010570107762675307934311788507834188892959338862091690298252262069181570867912343476423070733974457108518204218323764372269486067627507254546771920492554489989692515780696061630802248473408403824265151663702610072177901842265203015680) (-.f64 (*.f64 x (log.f64 (/.f64 x y))) z) (-.f64 (*.f64 x (log.f64 (*.f64 x y))) z)))
(-.f64 (*.f64 (log.f64 (*.f64 x y)) x) z)
(-.f64 (*.f64 x (log.f64 (*.f64 x y))) z)
Compiler

Compiled 213 to 116 computations (45.5% saved)

soundness0.0ms (0%)

end71.0ms (0.7%)

Compiler

Compiled 195 to 68 computations (65.1% saved)

Profiling

Loading profile data...