logq (problem 3.4.3)

Time bar (total: 5.3s)

analyze3.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
0%0%75%0%0%25%0%3
40%25%37.5%0%0%37.5%0%4
66.7%37.5%18.7%0%0%43.7%0%5
82.4%43.7%9.4%0%0%46.9%0%6
90.9%46.9%4.7%0%0%48.4%0%7
95.4%48.4%2.3%0%0%49.2%0%8
97.7%49.2%1.2%0%0%49.6%0%9
98.8%49.6%0.6%0%0%49.8%0%10
99.4%49.8%0.3%0%0%49.9%0%11
99.7%49.9%0.1%0%0%49.9%0%12
Compiler

Compiled 10 to 8 computations (20% saved)

sample3.4s (64.5%)

Results
2.3s4080×body1024valid
487.0ms2082×body512valid
322.0ms1689×body256valid
232.0ms405×body2048valid
1.0ms12×body256invalid
Bogosity

preprocess312.0ms (5.9%)

Algorithm
egg-herbie
Rules
8722×fma-def
1220×unsub-neg
1030×fma-neg
668×associate-+r+
656×distribute-rgt-in
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01473
13757
27057
314857
437757
598457
6186157
7253257
8352357
9476657
10532257
11548357
12565857
13610757
14700457
15707257
16710457
17712457
18721657
19735757
20747757
21747757
Stop Event
node limit
Calls
Call 1
Inputs
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(log.f64 (/.f64 (-.f64 1 (neg.f64 eps)) (+.f64 1 (neg.f64 eps))))
Outputs
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
(log.f64 (/.f64 (-.f64 1 (neg.f64 eps)) (+.f64 1 (neg.f64 eps))))
(log.f64 (/.f64 (-.f64 1 (neg.f64 eps)) (-.f64 1 eps)))
(-.f64 (log1p.f64 eps) (log1p.f64 (neg.f64 eps)))
Compiler

Compiled 9 to 7 computations (22.2% saved)

eval0.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune2.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Compiler

Compiled 32 to 24 computations (25% saved)

localize202.0ms (3.8%)

Localize:

Found 3 expressions with local error:

NewAccuracyProgram
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
100.0%
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Compiler

Compiled 39 to 22 computations (43.6% saved)

series4.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
eps
@0
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
1.0ms
eps
@0
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
0.0ms
eps
@inf
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
0.0ms
eps
@inf
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
0.0ms
eps
@-inf
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))

rewrite62.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
1534×prod-diff
920×log-prod
676×fma-def
448×pow-prod-up
412×pow-exp
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01357
127949
238053
Stop Event
node limit
Counts
3 → 3
Calls
Call 1
Inputs
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
Outputs
0
1
0

simplify61.0ms (1.2%)

Algorithm
egg-herbie
Rules
1482×fma-def
1230×fma-neg
1004×times-frac
874×associate-*r/
848×cancel-sign-sub-inv
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
064945
1182935
2460929
31293917
43996909
Stop Event
node limit
Counts
39 → 66
Calls
Call 1
Inputs
(*.f64 -2 eps)
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (+.f64 (*.f64 -2/7 (pow.f64 eps 7)) (*.f64 -2/3 (pow.f64 eps 3)))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
1
(+.f64 (*.f64 -2 eps) 1)
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 2 (pow.f64 eps 2)) 1))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 2 (pow.f64 eps 2)) (+.f64 1 (*.f64 -2 (pow.f64 eps 3)))))
-1
(-.f64 (*.f64 2 (/.f64 1 eps)) 1)
(-.f64 (*.f64 2 (/.f64 1 eps)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
-1
(-.f64 (*.f64 2 (/.f64 1 eps)) 1)
(-.f64 (*.f64 2 (/.f64 1 eps)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(*.f64 -2 eps)
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (+.f64 (*.f64 -2/7 (pow.f64 eps 7)) (*.f64 -2/3 (pow.f64 eps 3)))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(*.f64 -1 (log.f64 -1))
(-.f64 (*.f64 -1 (log.f64 -1)) (*.f64 2 (/.f64 1 eps)))
(-.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
0
1
0
Outputs
(*.f64 -2 eps)
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))
(fma.f64 -2 eps (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 -2/5 (pow.f64 eps 5))))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (+.f64 (*.f64 -2/7 (pow.f64 eps 7)) (*.f64 -2/3 (pow.f64 eps 3)))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (fma.f64 -2/7 (pow.f64 eps 7) (*.f64 -2/3 (pow.f64 eps 3)))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 -2/7 (pow.f64 eps 7)))))
(fma.f64 -2 eps (fma.f64 -2/3 (pow.f64 eps 3) (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/7 (pow.f64 eps 7)))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (/.f64 2 eps))
(+.f64 (log.f64 -1) (/.f64 -2 eps))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))))
(+.f64 (-.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 -2 eps))
(+.f64 (log.f64 -1) (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))))
(+.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (/.f64 -2/3 (pow.f64 eps 3)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))))
(-.f64 (-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))) (/.f64 2/3 (pow.f64 eps 3)))
(+.f64 (log.f64 -1) (+.f64 (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))) (/.f64 -2/5 (pow.f64 eps 5))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (/.f64 2 eps))
(+.f64 (log.f64 -1) (/.f64 -2 eps))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))))
(+.f64 (-.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 -2 eps))
(+.f64 (log.f64 -1) (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))))
(+.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (/.f64 -2/3 (pow.f64 eps 3)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))))
(-.f64 (-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))) (/.f64 2/3 (pow.f64 eps 3)))
(+.f64 (log.f64 -1) (+.f64 (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))) (/.f64 -2/5 (pow.f64 eps 5))))
1
(+.f64 (*.f64 -2 eps) 1)
(fma.f64 -2 eps 1)
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 2 (pow.f64 eps 2)) 1))
(fma.f64 -2 eps (fma.f64 2 (*.f64 eps eps) 1))
(fma.f64 -2 eps (fma.f64 eps (*.f64 eps 2) 1))
(fma.f64 eps (fma.f64 eps 2 -2) 1)
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 2 (pow.f64 eps 2)) (+.f64 1 (*.f64 -2 (pow.f64 eps 3)))))
(fma.f64 -2 eps (+.f64 (fma.f64 2 (*.f64 eps eps) 1) (*.f64 -2 (pow.f64 eps 3))))
(fma.f64 -2 eps (fma.f64 2 (*.f64 eps eps) (fma.f64 -2 (pow.f64 eps 3) 1)))
(fma.f64 -2 eps (fma.f64 -2 (pow.f64 eps 3) (fma.f64 eps (*.f64 eps 2) 1)))
(fma.f64 -2 (pow.f64 eps 3) (fma.f64 eps (fma.f64 eps 2 -2) 1))
-1
(-.f64 (*.f64 2 (/.f64 1 eps)) 1)
(+.f64 (/.f64 2 eps) -1)
(+.f64 -1 (/.f64 2 eps))
(-.f64 (*.f64 2 (/.f64 1 eps)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (/.f64 2 eps) (+.f64 1 (/.f64 2 (*.f64 eps eps))))
(+.f64 (/.f64 2 eps) (-.f64 -1 (/.f64 2 (*.f64 eps eps))))
(+.f64 -1 (+.f64 (/.f64 2 eps) (/.f64 -2 (*.f64 eps eps))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(+.f64 (/.f64 2 (pow.f64 eps 3)) (-.f64 (/.f64 2 eps) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 (/.f64 2 eps) (-.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 -1 (+.f64 (/.f64 -2 (*.f64 eps eps)) (+.f64 (/.f64 2 eps) (/.f64 2 (pow.f64 eps 3)))))
(+.f64 -1 (+.f64 (/.f64 2 eps) (*.f64 (/.f64 (/.f64 1 eps) eps) (+.f64 (/.f64 2 eps) -2))))
(+.f64 (/.f64 2 eps) (fma.f64 (/.f64 (/.f64 1 eps) eps) (+.f64 -2 (/.f64 2 eps)) -1))
-1
(-.f64 (*.f64 2 (/.f64 1 eps)) 1)
(+.f64 (/.f64 2 eps) -1)
(+.f64 -1 (/.f64 2 eps))
(-.f64 (*.f64 2 (/.f64 1 eps)) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(-.f64 (/.f64 2 eps) (+.f64 1 (/.f64 2 (*.f64 eps eps))))
(+.f64 (/.f64 2 eps) (-.f64 -1 (/.f64 2 (*.f64 eps eps))))
(+.f64 -1 (+.f64 (/.f64 2 eps) (/.f64 -2 (*.f64 eps eps))))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(+.f64 (/.f64 2 (pow.f64 eps 3)) (-.f64 (/.f64 2 eps) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 (/.f64 2 eps) (-.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 -1 (+.f64 (/.f64 -2 (*.f64 eps eps)) (+.f64 (/.f64 2 eps) (/.f64 2 (pow.f64 eps 3)))))
(+.f64 -1 (+.f64 (/.f64 2 eps) (*.f64 (/.f64 (/.f64 1 eps) eps) (+.f64 (/.f64 2 eps) -2))))
(+.f64 (/.f64 2 eps) (fma.f64 (/.f64 (/.f64 1 eps) eps) (+.f64 -2 (/.f64 2 eps)) -1))
(*.f64 -2 eps)
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.f64 -2/3 (pow.f64 eps 3))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/3 (pow.f64 eps 3))))
(fma.f64 -2 eps (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 -2/5 (pow.f64 eps 5))))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (+.f64 (*.f64 -2/7 (pow.f64 eps 7)) (*.f64 -2/3 (pow.f64 eps 3)))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (fma.f64 -2/7 (pow.f64 eps 7) (*.f64 -2/3 (pow.f64 eps 3)))))
(fma.f64 -2 eps (fma.f64 -2/5 (pow.f64 eps 5) (fma.f64 -2/3 (pow.f64 eps 3) (*.f64 -2/7 (pow.f64 eps 7)))))
(fma.f64 -2 eps (fma.f64 -2/3 (pow.f64 eps 3) (fma.f64 -2/5 (pow.f64 eps 5) (*.f64 -2/7 (pow.f64 eps 7)))))
(log.f64 -1)
(-.f64 (log.f64 -1) (*.f64 2 (/.f64 1 eps)))
(-.f64 (log.f64 -1) (/.f64 2 eps))
(+.f64 (log.f64 -1) (/.f64 -2 eps))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))))
(+.f64 (-.f64 (log.f64 -1) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 -2 eps))
(+.f64 (log.f64 -1) (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))))
(+.f64 (+.f64 (log.f64 -1) (/.f64 -2 eps)) (/.f64 -2/3 (pow.f64 eps 3)))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))))
(-.f64 (-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))) (/.f64 2/3 (pow.f64 eps 3)))
(+.f64 (log.f64 -1) (+.f64 (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))) (/.f64 -2/5 (pow.f64 eps 5))))
(*.f64 -1 (log.f64 -1))
(neg.f64 (log.f64 -1))
(-.f64 (*.f64 -1 (log.f64 -1)) (*.f64 2 (/.f64 1 eps)))
(-.f64 (neg.f64 (log.f64 -1)) (/.f64 2 eps))
(fma.f64 -1 (log.f64 -1) (/.f64 -2 eps))
(-.f64 (/.f64 -2 eps) (log.f64 -1))
(-.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (neg.f64 (log.f64 -1)) (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))))
(-.f64 (fma.f64 -1 (log.f64 -1) (/.f64 -2 eps)) (/.f64 2/3 (pow.f64 eps 3)))
(+.f64 (-.f64 (/.f64 -2 eps) (log.f64 -1)) (/.f64 -2/3 (pow.f64 eps 3)))
(-.f64 (*.f64 -1 (log.f64 -1)) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))))))
(-.f64 (neg.f64 (log.f64 -1)) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (+.f64 (/.f64 2 eps) (/.f64 2/5 (pow.f64 eps 5)))))
(-.f64 (-.f64 (fma.f64 -1 (log.f64 -1) (/.f64 -2 eps)) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 2/5 (pow.f64 eps 5)))
(-.f64 (+.f64 (+.f64 (/.f64 -2 eps) (/.f64 -2/3 (pow.f64 eps 3))) (/.f64 -2/5 (pow.f64 eps 5))) (log.f64 -1))
(+.f64 (+.f64 (-.f64 (/.f64 -2 eps) (log.f64 -1)) (/.f64 -2/3 (pow.f64 eps 3))) (/.f64 -2/5 (pow.f64 eps 5)))
0
1
0

eval66.0ms (1.2%)

Compiler

Compiled 820 to 660 computations (19.5% saved)

prune10.0ms (0.2%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New63366
Fresh000
Picked022
Done000
Total63568
Accuracy
100.0%
Counts
68 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.9%
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
99.5%
(*.f64 -2 eps)
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.5%
0
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.9%
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
99.5%
(*.f64 -2 eps)
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.5%
0
Compiler

Compiled 62 to 46 computations (25.8% saved)

localize47.0ms (0.9%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
99.5%
(*.f64 eps -2/3)
Compiler

Compiled 27 to 18 computations (33.3% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
eps
@inf
(*.f64 eps -2/3)
0.0ms
eps
@-inf
(*.f64 eps -2/3)
0.0ms
eps
@0
(*.f64 eps -2/3)

rewrite45.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
884×pow1
860×add-sqr-sqrt
842×*-un-lft-identity
816×add-exp-log
816×log1p-expm1-u
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11007
211117
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 eps -2/3)
Outputs
(+.f64 0 (*.f64 eps -2/3))
(+.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps)) (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -2/3) eps))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -2/3) eps))))
(-.f64 (+.f64 1 (*.f64 eps -2/3)) 1)
(pow.f64 (*.f64 eps -2/3) 1)
(pow.f64 (cbrt.f64 (*.f64 eps -2/3)) 3)
(pow.f64 (pow.f64 (*.f64 eps -2/3) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 eps -2/3)) 2)
(sqrt.f64 (*.f64 (*.f64 eps eps) 4/9))
(log.f64 (pow.f64 (exp.f64 -2/3) eps))
(cbrt.f64 (pow.f64 (*.f64 eps -2/3) 3))
(expm1.f64 (log1p.f64 (*.f64 eps -2/3)))
(exp.f64 (log.f64 (*.f64 eps -2/3)))
(log1p.f64 (expm1.f64 (*.f64 eps -2/3)))

simplify64.0ms (1.2%)

Algorithm
egg-herbie
Rules
1582×log-prod
1574×fma-def
1110×fma-neg
518×associate-*r*
512×*-commutative
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
044238
194224
2309200
32201200
44992200
57216200
Stop Event
node limit
Counts
26 → 18
Calls
Call 1
Inputs
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(+.f64 0 (*.f64 eps -2/3))
(+.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps)) (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -2/3) eps))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -2/3) eps))))
(-.f64 (+.f64 1 (*.f64 eps -2/3)) 1)
(pow.f64 (*.f64 eps -2/3) 1)
(pow.f64 (cbrt.f64 (*.f64 eps -2/3)) 3)
(pow.f64 (pow.f64 (*.f64 eps -2/3) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 eps -2/3)) 2)
(sqrt.f64 (*.f64 (*.f64 eps eps) 4/9))
(log.f64 (pow.f64 (exp.f64 -2/3) eps))
(cbrt.f64 (pow.f64 (*.f64 eps -2/3) 3))
(expm1.f64 (log1p.f64 (*.f64 eps -2/3)))
(exp.f64 (log.f64 (*.f64 eps -2/3)))
(log1p.f64 (expm1.f64 (*.f64 eps -2/3)))
Outputs
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(*.f64 -2/3 eps)
(+.f64 0 (*.f64 eps -2/3))
(*.f64 -2/3 eps)
(+.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps)) (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps))))
(*.f64 3 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps))))
(*.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -2/3) eps))) 3)
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -2/3) eps))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -2/3) eps))))
(*.f64 -2/3 eps)
(-.f64 (+.f64 1 (*.f64 eps -2/3)) 1)
(*.f64 -2/3 eps)
(pow.f64 (*.f64 eps -2/3) 1)
(*.f64 -2/3 eps)
(pow.f64 (cbrt.f64 (*.f64 eps -2/3)) 3)
(*.f64 -2/3 eps)
(pow.f64 (pow.f64 (*.f64 eps -2/3) 3) 1/3)
(*.f64 -2/3 eps)
(pow.f64 (sqrt.f64 (*.f64 eps -2/3)) 2)
(*.f64 -2/3 eps)
(sqrt.f64 (*.f64 (*.f64 eps eps) 4/9))
(*.f64 -2/3 eps)
(log.f64 (pow.f64 (exp.f64 -2/3) eps))
(*.f64 -2/3 eps)
(cbrt.f64 (pow.f64 (*.f64 eps -2/3) 3))
(*.f64 -2/3 eps)
(expm1.f64 (log1p.f64 (*.f64 eps -2/3)))
(*.f64 -2/3 eps)
(exp.f64 (log.f64 (*.f64 eps -2/3)))
(*.f64 -2/3 eps)
(log1p.f64 (expm1.f64 (*.f64 eps -2/3)))
(*.f64 -2/3 eps)

eval5.0ms (0.1%)

Compiler

Compiled 225 to 166 computations (26.2% saved)

prune5.0ms (0.1%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New18018
Fresh011
Picked022
Done022
Total18523
Accuracy
100.0%
Counts
23 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.9%
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
99.5%
(*.f64 -2 eps)
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.5%
0
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.9%
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
99.5%
(*.f64 -2 eps)
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.5%
0
Compiler

Compiled 62 to 46 computations (25.8% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune4.0ms (0.1%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done044
Total055
Accuracy
100.0%
Counts
5 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.9%
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
99.5%
(*.f64 -2 eps)
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.5%
0
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.9%
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
99.5%
(*.f64 -2 eps)
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.5%
0
Compiler

Compiled 62 to 46 computations (25.8% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune3.0ms (0.1%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done044
Total055
Accuracy
100.0%
Counts
5 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.9%
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
99.5%
(*.f64 -2 eps)
7.7%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.5%
0
Compiler

Compiled 58 to 42 computations (27.6% saved)

regimes11.0ms (0.2%)

Counts
5 → 1
Calls
Call 1
Inputs
0
(*.f64 -2 eps)
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
Outputs
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
Calls

3 calls:

4.0ms
eps
3.0ms
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
2.0ms
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Results
AccuracySegmentsBranch
100.0%1eps
100.0%1(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
100.0%1(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Compiler

Compiled 46 to 33 computations (28.3% saved)

regimes9.0ms (0.2%)

Counts
4 → 1
Calls
Call 1
Inputs
0
(*.f64 -2 eps)
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
Outputs
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
Calls

3 calls:

4.0ms
eps
2.0ms
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
2.0ms
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Results
AccuracySegmentsBranch
99.9%1eps
99.9%1(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
99.9%1(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Compiler

Compiled 40 to 29 computations (27.5% saved)

regimes8.0ms (0.2%)

Counts
3 → 1
Calls
Call 1
Inputs
0
(*.f64 -2 eps)
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Outputs
(*.f64 -2 eps)
Calls

3 calls:

4.0ms
eps
2.0ms
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
2.0ms
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Results
AccuracySegmentsBranch
99.5%1eps
99.5%1(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
99.5%1(/.f64 (-.f64 1 eps) (+.f64 1 eps))
Compiler

Compiled 32 to 24 computations (25% saved)

regimes3.0ms (0.1%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
0
Outputs
0
Calls

1 calls:

3.0ms
eps
Results
AccuracySegmentsBranch
5.5%1eps
Compiler

Compiled 4 to 3 computations (25% saved)

simplify46.0ms (0.9%)

Algorithm
egg-herbie
Rules
10×*-commutative
sub-neg
+-commutative
neg-mul-1
neg-sub0
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01648
12448
22948
33248
43348
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
(*.f64 -2 eps)
0
Outputs
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
(*.f64 -2 eps)
(*.f64 eps -2)
0
Compiler

Compiled 22 to 16 computations (27.3% saved)

soundness841.0ms (16%)

Rules
8722×fma-def
1534×prod-diff
1482×fma-def
1230×fma-neg
1220×unsub-neg
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01473
13757
27057
314857
437757
598457
6186157
7253257
8352357
9476657
10532257
11548357
12565857
13610757
14700457
15707257
16710457
17712457
18721657
19735757
20747757
21747757
01357
127949
238053
064945
1182935
2460929
31293917
43996909
Stop Event
node limit
node limit
node limit
Compiler

Compiled 277 to 204 computations (26.4% saved)

end0.0ms (0%)

preprocess52.0ms (1%)

Compiler

Compiled 88 to 66 computations (25% saved)

Profiling

Loading profile data...