logq (problem 3.4.3)

Time bar (total: 6.0s)

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.3s (55.4%)

Results
2.2s4164×body1024valid
666.0ms2027×body512valid
238.0ms392×body2048valid
225.0ms1673×body256valid
1.0ms14×body256invalid
Bogosity

preprocess332.0ms (5.6%)

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
01450
13738
27038
314838
437738
598438
6186138
7253238
8352338
9476638
10532238
11548338
12565838
13610738
14700438
15707238
16710438
17712438
18721638
19735738
20747738
21747738
Stop Event
node limit
Calls
Call 1
Inputs
(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 (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 10 to 8 computations (20% saved)

simplify260.0ms (4.4%)

Algorithm
egg-herbie
Rules
3044×fma-def
1338×distribute-lft-in
944×fma-neg
932×sub-neg
644×distribute-rgt-in
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0923
12019
23019
34419
47419
510619
616319
729619
860219
9105319
10146219
11203719
12286519
13406619
14490019
15499619
16502819
17502819
18653319
19716519
20724319
21725119
22725919
23725919
24745919
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Outputs
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))

eval1.0ms (0%)

Compiler

Compiled 15 to 11 computations (26.7% saved)

prune2.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Accurracy
100.0%
Counts
3 → 2
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
8.9%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
8.9%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Compiler

Compiled 32 to 24 computations (25% saved)

localize148.0ms (2.5%)

Local Accuracy

Found 3 expressions with local accuracy:

NewAccuracyProgram
100.0%
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
99.9%
(/.f64 (-.f64 1 eps) (+.f64 1 eps))
9.1%
(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
@inf
(-.f64 (log1p.f64 (neg.f64 eps)) (log1p.f64 eps))
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
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))

rewrite321.0ms (5.4%)

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

simplify63.0ms (1.1%)

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

eval122.0ms (2%)

Compiler

Compiled 820 to 660 computations (19.5% saved)

prune12.0ms (0.2%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New63366
Fresh000
Picked112
Done000
Total64468
Accurracy
100.0%
Counts
68 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.4%
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
99.1%
(*.f64 -2 eps)
8.9%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
99.4%
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
99.1%
(*.f64 -2 eps)
8.9%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
Compiler

Compiled 48 to 36 computations (25% saved)

localize92.0ms (1.5%)

Local Accuracy

Found 2 expressions with local accuracy:

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

Compiled 27 to 18 computations (33.3% saved)

series3.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite102.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
1650×pow1
1522×add-exp-log
1522×log1p-expm1-u
1522×expm1-log1p-u
1490×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0928
118128
2204928
Stop Event
node limit
Counts
2 → 26
Calls
Call 1
Inputs
(*.f64 eps -2/3)
(*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))
Outputs
(-.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)))
(+.f64 (*.f64 eps (*.f64 eps (*.f64 eps -2/3))) (*.f64 eps -2))
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
(-.f64 (+.f64 1 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))) 1)
(pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 1)
(pow.f64 (cbrt.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))) 3)
(pow.f64 (pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))) 2)
(sqrt.f64 (pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 2))
(log.f64 (pow.f64 (exp.f64 eps) (fma.f64 eps (*.f64 eps -2/3) -2)))
(cbrt.f64 (pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 3))
(cbrt.f64 (*.f64 (pow.f64 eps 3) (pow.f64 (fma.f64 eps (*.f64 eps -2/3) -2) 3)))
(cbrt.f64 (*.f64 (pow.f64 (fma.f64 eps (*.f64 eps -2/3) -2) 3) (pow.f64 eps 3)))
(expm1.f64 (log1p.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))))
(exp.f64 (log.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))))
(log1p.f64 (expm1.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))))

simplify48.0ms (0.8%)

Algorithm
egg-herbie
Rules
1348×associate-*r*
1344×log-prod
1134×associate-*l*
602×unswap-sqr
566×associate-+r+
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
074698
1173698
2642698
34640698
Stop Event
node limit
Counts
50 → 35
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 -2 eps)
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 -2/3 (pow.f64 eps 3))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 -2/3 (pow.f64 eps 3))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(+.f64 (*.f64 -2 eps) (*.f64 -2/3 (pow.f64 eps 3)))
(-.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)))
(+.f64 (*.f64 eps (*.f64 eps (*.f64 eps -2/3))) (*.f64 eps -2))
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
(-.f64 (+.f64 1 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))) 1)
(pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 1)
(pow.f64 (cbrt.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))) 3)
(pow.f64 (pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))) 2)
(sqrt.f64 (pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 2))
(log.f64 (pow.f64 (exp.f64 eps) (fma.f64 eps (*.f64 eps -2/3) -2)))
(cbrt.f64 (pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 3))
(cbrt.f64 (*.f64 (pow.f64 eps 3) (pow.f64 (fma.f64 eps (*.f64 eps -2/3) -2) 3)))
(cbrt.f64 (*.f64 (pow.f64 (fma.f64 eps (*.f64 eps -2/3) -2) 3) (pow.f64 eps 3)))
(expm1.f64 (log1p.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))))
(exp.f64 (log.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))))
(log1p.f64 (expm1.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))))
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 -2 eps)
(*.f64 eps -2)
(+.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 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(+.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 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(+.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 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(*.f64 -2/3 (pow.f64 eps 3))
(+.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 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(+.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 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(+.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 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(*.f64 -2/3 (pow.f64 eps 3))
(+.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 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(+.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 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(+.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 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(-.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)
(+.f64 (*.f64 eps (*.f64 eps (*.f64 eps -2/3))) (*.f64 eps -2))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(-.f64 (+.f64 1 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))) 1)
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 1)
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(pow.f64 (cbrt.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))) 3)
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(pow.f64 (pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 3) 1/3)
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(pow.f64 (sqrt.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))) 2)
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(sqrt.f64 (pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 2))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(log.f64 (pow.f64 (exp.f64 eps) (fma.f64 eps (*.f64 eps -2/3) -2)))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(cbrt.f64 (pow.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2)) 3))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(cbrt.f64 (*.f64 (pow.f64 eps 3) (pow.f64 (fma.f64 eps (*.f64 eps -2/3) -2) 3)))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(cbrt.f64 (*.f64 (pow.f64 (fma.f64 eps (*.f64 eps -2/3) -2) 3) (pow.f64 eps 3)))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(expm1.f64 (log1p.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(exp.f64 (log.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))
(log1p.f64 (expm1.f64 (*.f64 eps (fma.f64 eps (*.f64 eps -2/3) -2))))
(fma.f64 -2 eps (*.f64 -2/3 (pow.f64 eps 3)))
(*.f64 eps (fma.f64 (*.f64 eps eps) -2/3 -2))
(*.f64 eps (fma.f64 -2/3 (*.f64 eps eps) -2))
(fma.f64 -2/3 (pow.f64 eps 3) (*.f64 eps -2))

eval8.0ms (0.1%)

Compiler

Compiled 345 to 244 computations (29.3% saved)

prune7.0ms (0.1%)

Pruning

4 alts after pruning (2 fresh and 2 done)

PrunedKeptTotal
New34135
Fresh011
Picked112
Done011
Total35439
Accurracy
100.0%
Counts
39 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.4%
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
99.1%
(*.f64 -2 eps)
8.9%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
99.4%
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
99.1%
(*.f64 -2 eps)
8.9%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
Compiler

Compiled 54 to 40 computations (25.9% saved)

localize54.0ms (0.9%)

Local Accuracy

Found 3 expressions with local accuracy:

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

Compiled 34 to 22 computations (35.3% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite55.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1290×pow1
1186×add-exp-log
1186×log1p-expm1-u
1186×expm1-log1p-u
1160×add-log-exp
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0732
114226
2164426
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 eps (*.f64 eps -2/3))
(*.f64 (*.f64 eps (*.f64 eps -2/3)) eps)
Outputs
(-.f64 (+.f64 1 (*.f64 eps (*.f64 eps -2/3))) 1)
(pow.f64 (*.f64 eps (*.f64 eps -2/3)) 1)
(pow.f64 (cbrt.f64 (*.f64 eps (*.f64 eps -2/3))) 3)
(pow.f64 (pow.f64 (*.f64 eps (*.f64 eps -2/3)) 3) 1/3)
(pow.f64 (*.f64 eps (sqrt.f64 -2/3)) 2)
(sqrt.f64 (pow.f64 (*.f64 eps (*.f64 eps -2/3)) 2))
(log.f64 (pow.f64 (exp.f64 eps) (*.f64 eps -2/3)))
(cbrt.f64 (pow.f64 (*.f64 eps (*.f64 eps -2/3)) 3))
(expm1.f64 (log1p.f64 (*.f64 eps (*.f64 eps -2/3))))
(exp.f64 (log.f64 (*.f64 eps (*.f64 eps -2/3))))
(log1p.f64 (expm1.f64 (*.f64 eps (*.f64 eps -2/3))))
(-.f64 (+.f64 1 (*.f64 (pow.f64 eps 3) -2/3)) 1)
(pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 1)
(pow.f64 (cbrt.f64 (*.f64 (pow.f64 eps 3) -2/3)) 3)
(pow.f64 (pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 (pow.f64 eps 3) -2/3)) 2)
(sqrt.f64 (pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 2))
(log.f64 (exp.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(cbrt.f64 (pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 3))
(expm1.f64 (log1p.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(exp.f64 (log.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(log1p.f64 (expm1.f64 (*.f64 (pow.f64 eps 3) -2/3)))

simplify73.0ms (1.2%)

Algorithm
egg-herbie
Rules
1386×log-prod
1128×fma-def
922×distribute-rgt-in
888×distribute-lft-in
702×associate-+r+
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
058598
1141598
2582598
32096598
47458598
Stop Event
node limit
Counts
46 → 25
Calls
Call 1
Inputs
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(-.f64 (+.f64 1 (*.f64 eps (*.f64 eps -2/3))) 1)
(pow.f64 (*.f64 eps (*.f64 eps -2/3)) 1)
(pow.f64 (cbrt.f64 (*.f64 eps (*.f64 eps -2/3))) 3)
(pow.f64 (pow.f64 (*.f64 eps (*.f64 eps -2/3)) 3) 1/3)
(pow.f64 (*.f64 eps (sqrt.f64 -2/3)) 2)
(sqrt.f64 (pow.f64 (*.f64 eps (*.f64 eps -2/3)) 2))
(log.f64 (pow.f64 (exp.f64 eps) (*.f64 eps -2/3)))
(cbrt.f64 (pow.f64 (*.f64 eps (*.f64 eps -2/3)) 3))
(expm1.f64 (log1p.f64 (*.f64 eps (*.f64 eps -2/3))))
(exp.f64 (log.f64 (*.f64 eps (*.f64 eps -2/3))))
(log1p.f64 (expm1.f64 (*.f64 eps (*.f64 eps -2/3))))
(-.f64 (+.f64 1 (*.f64 (pow.f64 eps 3) -2/3)) 1)
(pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 1)
(pow.f64 (cbrt.f64 (*.f64 (pow.f64 eps 3) -2/3)) 3)
(pow.f64 (pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 (pow.f64 eps 3) -2/3)) 2)
(sqrt.f64 (pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 2))
(log.f64 (exp.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(cbrt.f64 (pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 3))
(expm1.f64 (log1p.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(exp.f64 (log.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(log1p.f64 (expm1.f64 (*.f64 (pow.f64 eps 3) -2/3)))
Outputs
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 2))
(*.f64 -2/3 (*.f64 eps eps))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(*.f64 -2/3 (pow.f64 eps 3))
(-.f64 (+.f64 1 (*.f64 eps (*.f64 eps -2/3))) 1)
(*.f64 -2/3 (*.f64 eps eps))
(pow.f64 (*.f64 eps (*.f64 eps -2/3)) 1)
(*.f64 -2/3 (*.f64 eps eps))
(pow.f64 (cbrt.f64 (*.f64 eps (*.f64 eps -2/3))) 3)
(*.f64 -2/3 (*.f64 eps eps))
(pow.f64 (pow.f64 (*.f64 eps (*.f64 eps -2/3)) 3) 1/3)
(*.f64 -2/3 (*.f64 eps eps))
(pow.f64 (*.f64 eps (sqrt.f64 -2/3)) 2)
(*.f64 -2/3 (*.f64 eps eps))
(sqrt.f64 (pow.f64 (*.f64 eps (*.f64 eps -2/3)) 2))
(*.f64 -2/3 (*.f64 eps eps))
(log.f64 (pow.f64 (exp.f64 eps) (*.f64 eps -2/3)))
(*.f64 -2/3 (*.f64 eps eps))
(cbrt.f64 (pow.f64 (*.f64 eps (*.f64 eps -2/3)) 3))
(*.f64 -2/3 (*.f64 eps eps))
(expm1.f64 (log1p.f64 (*.f64 eps (*.f64 eps -2/3))))
(*.f64 -2/3 (*.f64 eps eps))
(exp.f64 (log.f64 (*.f64 eps (*.f64 eps -2/3))))
(*.f64 -2/3 (*.f64 eps eps))
(log1p.f64 (expm1.f64 (*.f64 eps (*.f64 eps -2/3))))
(*.f64 -2/3 (*.f64 eps eps))
(-.f64 (+.f64 1 (*.f64 (pow.f64 eps 3) -2/3)) 1)
(*.f64 -2/3 (pow.f64 eps 3))
(pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 1)
(*.f64 -2/3 (pow.f64 eps 3))
(pow.f64 (cbrt.f64 (*.f64 (pow.f64 eps 3) -2/3)) 3)
(*.f64 -2/3 (pow.f64 eps 3))
(pow.f64 (pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 3) 1/3)
(*.f64 -2/3 (pow.f64 eps 3))
(pow.f64 (sqrt.f64 (*.f64 (pow.f64 eps 3) -2/3)) 2)
(*.f64 -2/3 (pow.f64 eps 3))
(sqrt.f64 (pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 2))
(*.f64 -2/3 (pow.f64 eps 3))
(log.f64 (exp.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(*.f64 -2/3 (pow.f64 eps 3))
(cbrt.f64 (pow.f64 (*.f64 (pow.f64 eps 3) -2/3) 3))
(*.f64 -2/3 (pow.f64 eps 3))
(expm1.f64 (log1p.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(*.f64 -2/3 (pow.f64 eps 3))
(exp.f64 (log.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(*.f64 -2/3 (pow.f64 eps 3))
(log1p.f64 (expm1.f64 (*.f64 (pow.f64 eps 3) -2/3)))
(*.f64 -2/3 (pow.f64 eps 3))

eval10.0ms (0.2%)

Compiler

Compiled 472 to 348 computations (26.3% saved)

prune17.0ms (0.3%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New37037
Fresh011
Picked011
Done022
Total37441
Accurracy
100.0%
Counts
41 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.4%
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
99.1%
(*.f64 -2 eps)
8.9%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
99.4%
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
99.1%
(*.f64 -2 eps)
8.9%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
Compiler

Compiled 54 to 40 computations (25.9% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune3.0ms (0%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done033
Total044
Accurracy
100.0%
Counts
4 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.4%
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
99.1%
(*.f64 -2 eps)
8.9%
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
5.2%
0
Compiler

Compiled 65 to 46 computations (29.2% saved)

regimes10.0ms (0.2%)

Counts
6 → 1
Calls
Call 1
Inputs
0
(*.f64 -2 eps)
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.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
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 57 to 40 computations (29.8% saved)

regimes16.0ms (0.3%)

Counts
5 → 1
Calls
Call 1
Inputs
0
(*.f64 -2 eps)
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.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:

8.0ms
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
4.0ms
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 51 to 36 computations (29.4% saved)

regimes9.0ms (0.1%)

Counts
4 → 1
Calls
Call 1
Inputs
0
(*.f64 -2 eps)
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
(log.f64 (/.f64 (-.f64 1 eps) (+.f64 1 eps)))
Outputs
(+.f64 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.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 43 to 31 computations (27.9% saved)

regimes4.0ms (0.1%)

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

1 calls:

3.0ms
eps
Results
AccuracySegmentsBranch
99.1%1eps
Compiler

Compiled 7 to 5 computations (28.6% saved)

regimes6.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:

6.0ms
eps
Results
AccuracySegmentsBranch
5.2%1eps
Compiler

Compiled 4 to 3 computations (25% saved)

simplify6.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01979
13079
23579
33879
43979
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 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
(*.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 (*.f64 (*.f64 eps (*.f64 eps -2/3)) eps) (*.f64 -2 eps))
(+.f64 (*.f64 eps (*.f64 eps (*.f64 eps -2/3))) (*.f64 eps -2))
(*.f64 -2 eps)
(*.f64 eps -2)
0
Compiler

Compiled 34 to 24 computations (29.4% saved)

soundness816.0ms (13.6%)

Rules
3044×fma-def
1650×pow1
1534×prod-diff
1522×add-exp-log
1522×log1p-expm1-u
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0923
12019
23019
34419
47419
510619
616319
729619
860219
9105319
10146219
11203719
12286519
13406619
14490019
15499619
16502819
17502819
18653319
19716519
20724319
21725119
22725919
23725919
24745919
01357
127949
238053
064945
1182935
2460929
31293917
43996909
0928
118128
2204928
Stop Event
node limit
node limit
node limit
node limit
Compiler

Compiled 306 to 223 computations (27.1% saved)

end0.0ms (0%)

preprocess57.0ms (1%)

Compiler

Compiled 110 to 80 computations (27.3% saved)

Profiling

Loading profile data...