logq (problem 3.4.3)

Time bar (total: 5.9s)

analyze9.0ms (0.2%)

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.9s (67.4%)

Results
2.6s4146×body1024valid
706.0ms2083×body512valid
380.0ms423×body2048valid
287.0ms1604×body256valid
1.0ms13×body256invalid
Bogosity

preprocess396.0ms (6.8%)

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)

eval1.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

prune3.0ms (0.1%)

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

Compiled 32 to 24 computations (25% saved)

localize158.0ms (2.7%)

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.6%
(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)))

rewrite65.0ms (1.1%)

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

simplify75.0ms (1.3%)

Algorithm
egg-herbie
Rules
1560×fma-def
1226×fma-neg
1032×times-frac
882×associate-*r/
862×cancel-sign-sub-inv
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
063953
1179943
2477927
31372917
44057909
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/3 (pow.f64 eps 3)) (*.f64 -2/5 (pow.f64 eps 5))))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/3 (pow.f64 eps 3)) (+.f64 (*.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 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps)))))
(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/5 (/.f64 1 (pow.f64 eps 5))) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps)))))
1
(+.f64 1 (*.f64 -2 eps))
(+.f64 1 (+.f64 (*.f64 -2 eps) (*.f64 2 (pow.f64 eps 2))))
(+.f64 1 (+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2 (pow.f64 eps 3)) (*.f64 2 (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 eps)) (*.f64 2 (/.f64 1 (pow.f64 eps 3)))) (+.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 eps)) (*.f64 2 (/.f64 1 (pow.f64 eps 3)))) (+.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/3 (pow.f64 eps 3)) (*.f64 -2/5 (pow.f64 eps 5))))
(+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2/3 (pow.f64 eps 3)) (+.f64 (*.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 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps))))
(-.f64 (log.f64 -1) (+.f64 (*.f64 2/5 (/.f64 1 (pow.f64 eps 5))) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps)))))
(*.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/5 (/.f64 1 (pow.f64 eps 5))) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps)))))
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 (*.f64 -2 eps) (+.f64 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 -2/5 (pow.f64 eps 5))))
(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/3 (pow.f64 eps 3)) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.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)))))
(fma.f64 -2 eps (fma.f64 -2/3 (pow.f64 eps 3) (fma.f64 -2/7 (pow.f64 eps 7) (*.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/5 (/.f64 1 (pow.f64 eps 5))) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps)))))
(-.f64 (log.f64 -1) (+.f64 (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 2/5 (pow.f64 eps 5))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (/.f64 2/5 (pow.f64 eps 5)))))
(+.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/5 (/.f64 1 (pow.f64 eps 5))) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps)))))
(-.f64 (log.f64 -1) (+.f64 (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 2/5 (pow.f64 eps 5))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (/.f64 2/5 (pow.f64 eps 5)))))
(+.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 1 (*.f64 -2 eps))
(+.f64 (*.f64 -2 eps) 1)
(fma.f64 -2 eps 1)
(+.f64 1 (+.f64 (*.f64 -2 eps) (*.f64 2 (pow.f64 eps 2))))
(+.f64 1 (fma.f64 -2 eps (*.f64 2 (*.f64 eps eps))))
(+.f64 1 (fma.f64 2 (*.f64 eps eps) (*.f64 -2 eps)))
(fma.f64 -2 eps (fma.f64 eps (*.f64 eps 2) 1))
(fma.f64 eps (fma.f64 eps 2 -2) 1)
(+.f64 1 (+.f64 (*.f64 -2 eps) (+.f64 (*.f64 -2 (pow.f64 eps 3)) (*.f64 2 (pow.f64 eps 2)))))
(+.f64 1 (fma.f64 -2 eps (fma.f64 -2 (pow.f64 eps 3) (*.f64 2 (*.f64 eps eps)))))
(+.f64 (fma.f64 -2 eps 1) (fma.f64 -2 (pow.f64 eps 3) (*.f64 eps (*.f64 eps 2))))
(fma.f64 -2 (+.f64 eps (pow.f64 eps 3)) (fma.f64 eps (*.f64 eps 2) 1))
(fma.f64 -2 eps (fma.f64 eps (*.f64 eps (fma.f64 -2 eps 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 (/.f64 2 eps) eps)))
(+.f64 (/.f64 2 eps) (+.f64 -1 (/.f64 -2 (*.f64 eps eps))))
(+.f64 -1 (+.f64 (/.f64 2 eps) (/.f64 (/.f64 -2 eps) eps)))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2 (/.f64 1 (pow.f64 eps 3)))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(+.f64 (/.f64 2 eps) (-.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 (/.f64 2 eps) (-.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 1 (/.f64 (/.f64 2 eps) eps))))
(+.f64 (/.f64 2 eps) (+.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 -1 (/.f64 -2 (*.f64 eps eps)))))
(+.f64 (+.f64 -1 (/.f64 2 eps)) (+.f64 (/.f64 2 (pow.f64 eps 3)) (/.f64 (/.f64 -2 eps) eps)))
(+.f64 (/.f64 2 eps) (fma.f64 (/.f64 (/.f64 1 eps) eps) (+.f64 (/.f64 2 eps) -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 (/.f64 2 eps) eps)))
(+.f64 (/.f64 2 eps) (+.f64 -1 (/.f64 -2 (*.f64 eps eps))))
(+.f64 -1 (+.f64 (/.f64 2 eps) (/.f64 (/.f64 -2 eps) eps)))
(-.f64 (+.f64 (*.f64 2 (/.f64 1 eps)) (*.f64 2 (/.f64 1 (pow.f64 eps 3)))) (+.f64 1 (*.f64 2 (/.f64 1 (pow.f64 eps 2)))))
(+.f64 (/.f64 2 eps) (-.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 1 (/.f64 2 (*.f64 eps eps)))))
(+.f64 (/.f64 2 eps) (-.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 1 (/.f64 (/.f64 2 eps) eps))))
(+.f64 (/.f64 2 eps) (+.f64 (/.f64 2 (pow.f64 eps 3)) (+.f64 -1 (/.f64 -2 (*.f64 eps eps)))))
(+.f64 (+.f64 -1 (/.f64 2 eps)) (+.f64 (/.f64 2 (pow.f64 eps 3)) (/.f64 (/.f64 -2 eps) eps)))
(+.f64 (/.f64 2 eps) (fma.f64 (/.f64 (/.f64 1 eps) eps) (+.f64 (/.f64 2 eps) -2) -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 (*.f64 -2 eps) (+.f64 (*.f64 -2/3 (pow.f64 eps 3)) (*.f64 -2/5 (pow.f64 eps 5))))
(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/3 (pow.f64 eps 3)) (+.f64 (*.f64 -2/5 (pow.f64 eps 5)) (*.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)))))
(fma.f64 -2 eps (fma.f64 -2/3 (pow.f64 eps 3) (fma.f64 -2/7 (pow.f64 eps 7) (*.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/5 (/.f64 1 (pow.f64 eps 5))) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps)))))
(-.f64 (log.f64 -1) (+.f64 (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))) (/.f64 2/5 (pow.f64 eps 5))))
(-.f64 (log.f64 -1) (+.f64 (/.f64 2 eps) (+.f64 (/.f64 2/3 (pow.f64 eps 3)) (/.f64 2/5 (pow.f64 eps 5)))))
(+.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/5 (/.f64 1 (pow.f64 eps 5))) (+.f64 (*.f64 2/3 (/.f64 1 (pow.f64 eps 3))) (*.f64 2 (/.f64 1 eps)))))
(-.f64 (neg.f64 (log.f64 -1)) (+.f64 (+.f64 (/.f64 2 eps) (/.f64 2/3 (pow.f64 eps 3))) (/.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) (log.f64 -1)) (/.f64 -2/3 (pow.f64 eps 3))) (/.f64 -2/5 (pow.f64 eps 5)))
(+.f64 (-.f64 (/.f64 -2 eps) (log.f64 -1)) (+.f64 (/.f64 -2/5 (pow.f64 eps 5)) (/.f64 -2/3 (pow.f64 eps 3))))
0
1
0

eval17.0ms (0.3%)

Compiler

Compiled 811 to 655 computations (19.2% saved)

prune16.0ms (0.3%)

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.5%
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
99.4%
(*.f64 -2 eps)
7.6%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.5%
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
99.4%
(*.f64 -2 eps)
7.6%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
Compiler

Compiled 64 to 50 computations (21.9% saved)

localize47.0ms (0.8%)

Localize:

Found 1 expressions with local error:

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

Compiled 31 to 23 computations (25.8% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite53.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1204×pow1
1126×add-exp-log
1126×log1p-expm1-u
1126×expm1-log1p-u
1102×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
114913
2157213
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 -2/3 (pow.f64 eps 3))
Outputs
(-.f64 (+.f64 1 (*.f64 -2/3 (pow.f64 eps 3))) 1)
(pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1)
(pow.f64 (*.f64 eps (cbrt.f64 -2/3)) 3)
(pow.f64 (pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 3) 1/3)
(pow.f64 (*.f64 (sqrt.f64 -2/3) (pow.f64 eps 3/2)) 2)
(sqrt.f64 (*.f64 (pow.f64 eps 6) 4/9))
(log.f64 (pow.f64 (exp.f64 -2/3) (pow.f64 eps 3)))
(cbrt.f64 (pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 3))
(expm1.f64 (log1p.f64 (*.f64 -2/3 (pow.f64 eps 3))))
(exp.f64 (log.f64 (*.f64 -2/3 (pow.f64 eps 3))))
(log1p.f64 (expm1.f64 (*.f64 -2/3 (pow.f64 eps 3))))

simplify59.0ms (1%)

Algorithm
egg-herbie
Rules
2268×log-prod
918×exp-sum
820×distribute-rgt-in
818×distribute-lft-in
650×associate-*r*
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
039275
198209
2313143
31886143
46007143
Stop Event
node limit
Counts
11 → 14
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 -2/3 (pow.f64 eps 3))) 1)
(pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1)
(pow.f64 (*.f64 eps (cbrt.f64 -2/3)) 3)
(pow.f64 (pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 3) 1/3)
(pow.f64 (*.f64 (sqrt.f64 -2/3) (pow.f64 eps 3/2)) 2)
(sqrt.f64 (*.f64 (pow.f64 eps 6) 4/9))
(log.f64 (pow.f64 (exp.f64 -2/3) (pow.f64 eps 3)))
(cbrt.f64 (pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 3))
(expm1.f64 (log1p.f64 (*.f64 -2/3 (pow.f64 eps 3))))
(exp.f64 (log.f64 (*.f64 -2/3 (pow.f64 eps 3))))
(log1p.f64 (expm1.f64 (*.f64 -2/3 (pow.f64 eps 3))))
Outputs
(-.f64 (+.f64 1 (*.f64 -2/3 (pow.f64 eps 3))) 1)
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1)
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(pow.f64 (*.f64 eps (cbrt.f64 -2/3)) 3)
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(pow.f64 (pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 3) 1/3)
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(pow.f64 (*.f64 (sqrt.f64 -2/3) (pow.f64 eps 3/2)) 2)
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(sqrt.f64 (*.f64 (pow.f64 eps 6) 4/9))
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(log.f64 (pow.f64 (exp.f64 -2/3) (pow.f64 eps 3)))
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(cbrt.f64 (pow.f64 (*.f64 -2/3 (pow.f64 eps 3)) 3))
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(expm1.f64 (log1p.f64 (*.f64 -2/3 (pow.f64 eps 3))))
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(exp.f64 (log.f64 (*.f64 -2/3 (pow.f64 eps 3))))
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))
(log1p.f64 (expm1.f64 (*.f64 -2/3 (pow.f64 eps 3))))
(+.f64 1 (-.f64 (*.f64 -2/3 (pow.f64 eps 3)) 1))
(+.f64 (*.f64 -2/3 (pow.f64 eps 3)) 0)
(*.f64 -2/3 (pow.f64 eps 3))

eval4.0ms (0.1%)

Compiler

Compiled 159 to 131 computations (17.6% saved)

prune5.0ms (0.1%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New14014
Fresh011
Picked022
Done022
Total14519
Accuracy
100.0%
Counts
19 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.5%
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
99.4%
(*.f64 -2 eps)
7.6%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.5%
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
99.4%
(*.f64 -2 eps)
7.6%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
Compiler

Compiled 64 to 50 computations (21.9% 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.5%
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
99.4%
(*.f64 -2 eps)
7.6%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.5%
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
99.4%
(*.f64 -2 eps)
7.6%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
Compiler

Compiled 64 to 50 computations (21.9% 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.5%
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
99.4%
(*.f64 -2 eps)
7.6%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
Compiler

Compiled 60 to 46 computations (23.3% saved)

regimes10.0ms (0.2%)

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

3 calls:

5.0ms
eps
2.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 47 to 35 computations (25.5% saved)

regimes18.0ms (0.3%)

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

3 calls:

13.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 41 to 31 computations (24.4% saved)

regimes9.0ms (0.1%)

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.4%1eps
99.4%1(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
99.4%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.2%1eps
Compiler

Compiled 4 to 3 computations (25% saved)

simplify6.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01652
12452
22952
33252
43352
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 -2 eps)
0
Outputs
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 eps -2) (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 -2 eps)
(*.f64 eps -2)
0
Compiler

Compiled 23 to 18 computations (21.7% saved)

soundness878.0ms (15%)

Rules
8722×fma-def
1534×prod-diff
1220×unsub-neg
1030×fma-neg
920×log-prod
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
Stop Event
node limit
node limit
Compiler

Compiled 181 to 136 computations (24.9% saved)

end0.0ms (0%)

preprocess63.0ms (1.1%)

Compiler

Compiled 90 to 70 computations (22.2% saved)

Profiling

Loading profile data...