Details

Time bar (total: 14.0s)

analyze133.0ms (1%)

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
25%25%74.9%0.1%0%0%0%5
31.3%31.2%68.7%0.1%0%0%0%6
45.9%43.7%51.5%0.1%4.7%0%0%7
50.8%48.4%46.8%0.1%4.7%0%0%8
59.7%55.4%37.5%0.1%7%0%0%9
62.6%58.1%34.7%0.1%7%0%0%10
67.4%61.9%29.9%0.1%8.2%0%0%11
69%63.3%28.4%0.1%8.2%0%0%12
Compiler

Compiled 12 to 9 computations (25% saved)

sample4.2s (30%)

Results
2.7s2503×body8192exit
1.3s7794×body256valid
141.0ms231×body1024valid
78.0ms228×body512valid
24.0ms140×body256infinite
5.0msbody2048valid
Bogosity

preprocess3.8s (26.8%)

Algorithm
egglog
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(-.f64 (log.f64 (+.f64 1 (exp.f64 y))) (*.f64 y x))
Outputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))
(-.f64 (log.f64 (+.f64 1 (exp.f64 y))) (*.f64 y x))
(-.f64 (log1p.f64 (exp.f64 y)) (*.f64 x y))
Compiler

Compiled 13 to 10 computations (23.1% saved)

simplify1.8s (12.7%)

Algorithm
egglog
Counts
1 → 2
Calls
Call 1
Inputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Outputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))

eval1.0ms (0%)

Compiler

Compiled 18 to 10 computations (44.4% saved)

prune2.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
0.5b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))
Compiler

Compiled 9 to 6 computations (33.3% saved)

localize15.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))
0.5b
(log1p.f64 (exp.f64 x))
Compiler

Compiled 19 to 6 computations (68.4% saved)

series110.0ms (0.8%)

Counts
2 → 32
Calls

9 calls:

TimeVariablePointExpression
42.0ms
x
@inf
(log1p.f64 (exp.f64 x))
31.0ms
x
@-inf
(log1p.f64 (exp.f64 x))
5.0ms
y
@0
(-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))
1.0ms
x
@0
(log1p.f64 (exp.f64 x))
1.0ms
x
@inf
(-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))
Compiler

Compiled 1575 to 985 computations (37.5% saved)

rewrite1.7s (11.9%)

Algorithm
batch-egg-rewrite
Rules
68×egg-rr
48×egg-rr
Counts
2 → 116
Calls
Call 1
Inputs
(log1p.f64 (exp.f64 x))
(-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (exp.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (cbrt.f64 (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (neg.f64 (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log1p.f64 (exp.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (log1p.f64 (exp.f64 x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (+.f64 0 (*.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) 0))) (-.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log1p.f64 (exp.f64 x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (-.f64 0 (*.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) 0))) (+.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) 0))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 0 (-.f64 (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (*.f64 0 (cbrt.f64 (log1p.f64 (exp.f64 x)))))) (+.f64 0 (cbrt.f64 (log1p.f64 (exp.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log1p.f64 (exp.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (log1p.f64 (exp.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (log1p.f64 (exp.f64 x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log1p.f64 (exp.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (log1p.f64 (exp.f64 x)) 0) (/.f64 1 (/.f64 1 (log1p.f64 (exp.f64 x)))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) 0) (/.f64 (+.f64 (pow.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) 3) (pow.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) 3)) (+.f64 (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))) (-.f64 (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))) (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x))))))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (/.f64 (+.f64 0 (pow.f64 (log1p.f64 (exp.f64 x)) 3)) (+.f64 0 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (*.f64 0 (log1p.f64 (exp.f64 x)))))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (log1p.f64 (exp.f64 x)) 0) (/.f64 (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) 0) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (-.f64 0 (*.f64 (log1p.f64 (exp.f64 x)) 0)))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (log1p.f64 (exp.f64 x)) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) 0) (log1p.f64 (exp.f64 x))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (-.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))) 0) (/.f64 (-.f64 (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))) (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x))))) (-.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x))))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (neg.f64 (log1p.f64 (exp.f64 x))) 0) (/.f64 (neg.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (neg.f64 (log1p.f64 (exp.f64 x)))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) 0) (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (+.f64 1 (/.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (*.f64 0 (+.f64 1 (/.f64 (log1p.f64 (exp.f64 x)) 0))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (log1p.f64 (exp.f64 x)) 0) (*.f64 (log1p.f64 (exp.f64 x)) (+.f64 1 (/.f64 0 (log1p.f64 (exp.f64 x))))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) 0) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (+.f64 0 (*.f64 (log1p.f64 (exp.f64 x)) 0)))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (+.f64 (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))) (-.f64 (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))) (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))))) 0) (/.f64 (+.f64 (pow.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) 3) (pow.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) 3)) (+.f64 (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))) (-.f64 (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x)))) (*.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x))))))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (+.f64 0 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (*.f64 0 (log1p.f64 (exp.f64 x))))) 0) (/.f64 (+.f64 0 (pow.f64 (log1p.f64 (exp.f64 x)) 3)) (+.f64 0 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (*.f64 0 (log1p.f64 (exp.f64 x)))))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (-.f64 0 (*.f64 (log1p.f64 (exp.f64 x)) 0))) 0) (/.f64 (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) 0) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (-.f64 0 (*.f64 (log1p.f64 (exp.f64 x)) 0)))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (+.f64 0 (*.f64 (log1p.f64 (exp.f64 x)) 0))) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) 0) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (+.f64 0 (*.f64 (log1p.f64 (exp.f64 x)) 0)))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (log1p.f64 (exp.f64 x)) 0) (/.f64 (+.f64 0 (pow.f64 (log1p.f64 (exp.f64 x)) 3)) (+.f64 0 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (*.f64 0 (log1p.f64 (exp.f64 x)))))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (/.f64 (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) 0) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (-.f64 0 (*.f64 (log1p.f64 (exp.f64 x)) 0)))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (log1p.f64 (exp.f64 x)) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) 0) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (+.f64 0 (*.f64 (log1p.f64 (exp.f64 x)) 0)))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 2 0) (log1p.f64 (exp.f64 x)) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 1 0) (log1p.f64 (exp.f64 x)) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 1/2 (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log1p.f64 (exp.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log1p.f64 (exp.f64 x)) (*.f64 -1 0))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (-.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) 0))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (+.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) 0))))))
((#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (*.f64 (cbrt.f64 (*.f64 x y)) (+.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) (cbrt.f64 (*.f64 x y))))) (-.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) (cbrt.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))) (cbrt.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2)) (cbrt.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x)))) (neg.f64 (cbrt.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 0 (+.f64 (cbrt.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2)) (*.f64 0 (cbrt.f64 (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x))))))) (cbrt.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (-.f64 (cbrt.f64 (pow.f64 (*.f64 x y) 2)) (*.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) (cbrt.f64 (*.f64 (neg.f64 x) y))))) (-.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) (cbrt.f64 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (cbrt.f64 (pow.f64 (*.f64 x y) 2)) (-.f64 (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (*.f64 (cbrt.f64 (*.f64 (neg.f64 x) y)) (cbrt.f64 (log1p.f64 (exp.f64 x)))))) (+.f64 (cbrt.f64 (*.f64 (neg.f64 x) y)) (cbrt.f64 (log1p.f64 (exp.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 0 (-.f64 (cbrt.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2)) (*.f64 0 (cbrt.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (+.f64 0 (cbrt.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (neg.f64 x) y) (neg.f64 (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 y) x (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x y)) (neg.f64 (cbrt.f64 (pow.f64 (*.f64 x y) 2))) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (neg.f64 y) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (neg.f64 x) (cbrt.f64 y)) (cbrt.f64 (pow.f64 y 2)) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1 (*.f64 x y) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (neg.f64 x) y)) (cbrt.f64 (pow.f64 (*.f64 x y) 2)) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 x) y (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y (neg.f64 x) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 0 0 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 0 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (neg.f64 x) y) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (log1p.f64 (exp.f64 x))) (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (*.f64 (neg.f64 x) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2)) (cbrt.f64 (log1p.f64 (exp.f64 x))) (*.f64 (neg.f64 x) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log1p.f64 (exp.f64 x)) (*.f64 (neg.f64 x) y))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log1p.f64 (exp.f64 x)) 1 (*.f64 (neg.f64 x) y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 x y) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) (pow.f64 (*.f64 x y) 3)) (fma.f64 (*.f64 x y) (fma.f64 y x (log1p.f64 (exp.f64 x))) (pow.f64 (log1p.f64 (exp.f64 x)) 2))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (fma.f64 (*.f64 x y) (fma.f64 y x (log1p.f64 (exp.f64 x))) (pow.f64 (log1p.f64 (exp.f64 x)) 2)) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) (pow.f64 (*.f64 x y) 3)) (fma.f64 (*.f64 x y) (fma.f64 y x (log1p.f64 (exp.f64 x))) (pow.f64 (log1p.f64 (exp.f64 x)) 2))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (log1p.f64 (exp.f64 x)) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) (pow.f64 (*.f64 x y) 3)) (fma.f64 (*.f64 x y) (fma.f64 y x (log1p.f64 (exp.f64 x))) (pow.f64 (log1p.f64 (exp.f64 x)) 2))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (fma.f64 y x (log1p.f64 (exp.f64 x))) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (pow.f64 (*.f64 x y) 2)) (fma.f64 y x (log1p.f64 (exp.f64 x)))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (log1p.f64 (exp.f64 x)) 0) (*.f64 (log1p.f64 (exp.f64 x)) (-.f64 1 (/.f64 (*.f64 x y) (log1p.f64 (exp.f64 x))))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 (neg.f64 x) y) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) (pow.f64 (*.f64 x y) 3)) (fma.f64 (*.f64 x y) (fma.f64 y x (log1p.f64 (exp.f64 x))) (pow.f64 (log1p.f64 (exp.f64 x)) 2))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x))) 0) (/.f64 (neg.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2)) (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x)))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (neg.f64 (fma.f64 y x (log1p.f64 (exp.f64 x)))) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (pow.f64 (*.f64 x y) 2)) (fma.f64 y x (log1p.f64 (exp.f64 x)))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 (neg.f64 x) y) 0) (*.f64 (*.f64 (neg.f64 x) y) (+.f64 1 (/.f64 (log1p.f64 (exp.f64 x)) (*.f64 (neg.f64 x) y)))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (-.f64 (*.f64 x y) (log1p.f64 (exp.f64 x))) 0) (/.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 3) (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2)) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (/.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 3) (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2)) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 0) (/.f64 1 (/.f64 1 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (/.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 3) (+.f64 0 (-.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2) (*.f64 0 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 0 0) (*.f64 0 (+.f64 1 (/.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 0))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (neg.f64 (log1p.f64 (exp.f64 x))) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) (pow.f64 (*.f64 x y) 3)) (+.f64 (pow.f64 (*.f64 x y) 2) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (*.f64 (*.f64 (neg.f64 x) y) (neg.f64 (log1p.f64 (exp.f64 x))))))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (+.f64 0 (-.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2) (*.f64 0 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y))))) 0) (/.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 3) (+.f64 0 (-.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2) (*.f64 0 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (+.f64 (pow.f64 (*.f64 x y) 2) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (*.f64 (*.f64 (neg.f64 x) y) (neg.f64 (log1p.f64 (exp.f64 x)))))) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) (pow.f64 (*.f64 x y) 3)) (+.f64 (pow.f64 (*.f64 x y) 2) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (*.f64 (*.f64 (neg.f64 x) y) (neg.f64 (log1p.f64 (exp.f64 x))))))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 0) (/.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 3) (+.f64 0 (-.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2) (*.f64 0 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (*.f64 (neg.f64 x) y) 0) (/.f64 (-.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 3) (pow.f64 (*.f64 x y) 3)) (+.f64 (pow.f64 (*.f64 x y) 2) (+.f64 (pow.f64 (log1p.f64 (exp.f64 x)) 2) (*.f64 (*.f64 (neg.f64 x) y) (neg.f64 (log1p.f64 (exp.f64 x))))))) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 2 0) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 1 0) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x if (!=.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2) 0) (/.f64 (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 3) (pow.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 2)) (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (neg.f64 x) y) (log1p.f64 (exp.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log1p.f64 (exp.f64 x)) (*.f64 (neg.f64 x) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (-.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log1p.f64 (exp.f64 x)) (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (+.f64 (*.f64 1/2 (log1p.f64 (exp.f64 x))) (*.f64 (neg.f64 x) y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 (neg.f64 x) y) (*.f64 1/2 (log1p.f64 (exp.f64 x)))) (*.f64 1/2 (log1p.f64 (exp.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (*.f64 (neg.f64 x) y) 0) (log1p.f64 (exp.f64 x)))))))

simplify2.3s (16.7%)

Algorithm
egglog

end0.0ms (0%)

Profiling

Loading profile data...