expq3 (problem 3.4.2)

Time bar (total: 31.0s)

analyze246.0ms (0.8%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%25.4%74.6%0%0%0%0
0%0%25.4%74.6%0%0%0%1
0%0%25.4%74.6%0%0%0%2
0%0%25.4%74.6%0%0%0%3
0%0%22.2%77.8%0%0%0%4
0%0%20.6%79.4%0%0%0%5
0%0%18.3%81.7%0%0%0%6
0%0%10.7%89.3%0%0%0%7
0%0%9.3%90.7%0%0%0%8
0%0%8.2%91.8%0%0%0%9
0%0%5.7%94.3%0%0%0%10
0%0%5%95%0%0%0%11
0%0%4.4%95.6%0%0%0%12
Compiler

Compiled 54 to 30 computations (44.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 159.0ms
ival-mult: 44.0ms (27.7% of total)
ival-exp: 22.0ms (13.8% of total)
...c/correct-round.rkt:104:19: 21.0ms (13.2% of total)
ival-<=: 18.0ms (11.3% of total)
ival-sub: 16.0ms (10.1% of total)
ival-fabs: 15.0ms (9.4% of total)
ival-add: 9.0ms (5.7% of total)
ival-fmin: 7.0ms (4.4% of total)
ival-div: 3.0ms (1.9% of total)
ival-and: 3.0ms (1.9% of total)
const: 1.0ms (0.6% of total)

sample30.0s (96.9%)

Results
14.1s64091×256precondition
9.0s6317×2048valid
1.1s1414×1024valid
217.0ms111×4096valid
148.0ms336×512valid
16.0ms78×256valid
Precisions
Click to see histograms. Total time spent on operations: 20.4s
ival-exp: 6.2s (30.4% of total)
ival-mult: 4.9s (24.1% of total)
...c/correct-round.rkt:104:19: 2.2s (10.7% of total)
ival-<=: 1.8s (8.7% of total)
ival-sub: 1.7s (8.5% of total)
ival-fabs: 1.4s (6.8% of total)
ival-fmin: 691.0ms (3.4% of total)
ival-add: 681.0ms (3.3% of total)
ival-div: 423.0ms (2.1% of total)
ival-and: 306.0ms (1.5% of total)
const: 108.0ms (0.5% of total)
Bogosity

preprocess109.0ms (0.4%)

Algorithm
egg-herbie
Rules
662×times-frac
578×div-sub
499×fma-define
425×distribute-lft-in
424×distribute-rgt-in
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
095937
1292921
2754921
32307921
47707921
Stop Event
node limit
Calls
Call 1
Inputs
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 (neg.f64 a) b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 (neg.f64 a) eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a (neg.f64 b)) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 (neg.f64 b) eps)) #s(literal 1 binary64))))
(/.f64 (*.f64 (neg.f64 eps) (-.f64 (exp.f64 (*.f64 (+.f64 a b) (neg.f64 eps))) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a (neg.f64 eps))) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b (neg.f64 eps))) #s(literal 1 binary64))))
(neg.f64 (/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 (neg.f64 a) b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 (neg.f64 a) eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64)))))
(neg.f64 (/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a (neg.f64 b)) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 (neg.f64 b) eps)) #s(literal 1 binary64)))))
(neg.f64 (/.f64 (*.f64 (neg.f64 eps) (-.f64 (exp.f64 (*.f64 (+.f64 a b) (neg.f64 eps))) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a (neg.f64 eps))) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b (neg.f64 eps))) #s(literal 1 binary64)))))
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 b a) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64))))
(/.f64 (*.f64 a (-.f64 (exp.f64 (*.f64 (+.f64 eps b) a)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b a)) #s(literal 1 binary64))))
(/.f64 (*.f64 b (-.f64 (exp.f64 (*.f64 (+.f64 a eps) b)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a b)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 eps b)) #s(literal 1 binary64))))
Outputs
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
(*.f64 (/.f64 eps (expm1.f64 (*.f64 eps b))) (/.f64 (expm1.f64 (*.f64 eps (+.f64 a b))) (expm1.f64 (*.f64 eps a))))
(*.f64 (expm1.f64 (*.f64 eps (+.f64 a b))) (/.f64 eps (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b)))))
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
(*.f64 (/.f64 eps (expm1.f64 (*.f64 eps b))) (/.f64 (expm1.f64 (*.f64 eps (+.f64 a b))) (expm1.f64 (*.f64 eps a))))
(*.f64 (expm1.f64 (*.f64 eps (+.f64 a b))) (/.f64 eps (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b)))))
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 (neg.f64 a) b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 (neg.f64 a) eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
(*.f64 (/.f64 eps (expm1.f64 (*.f64 eps (neg.f64 a)))) (/.f64 (expm1.f64 (*.f64 eps (+.f64 b (neg.f64 a)))) (expm1.f64 (*.f64 eps b))))
(*.f64 eps (/.f64 (/.f64 (expm1.f64 (*.f64 eps (-.f64 b a))) (expm1.f64 (*.f64 eps b))) (expm1.f64 (*.f64 a (neg.f64 eps)))))
(*.f64 eps (/.f64 (expm1.f64 (*.f64 eps (-.f64 b a))) (*.f64 (expm1.f64 (*.f64 eps b)) (expm1.f64 (*.f64 a (neg.f64 eps))))))
(*.f64 eps (/.f64 (expm1.f64 (*.f64 eps (-.f64 b a))) (*.f64 (expm1.f64 (*.f64 eps b)) (expm1.f64 (*.f64 eps (neg.f64 a))))))
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a (neg.f64 b)) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 (neg.f64 b) eps)) #s(literal 1 binary64))))
(*.f64 eps (/.f64 (expm1.f64 (*.f64 eps (-.f64 a b))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps (neg.f64 b))))))
(*.f64 (/.f64 eps (expm1.f64 (*.f64 eps (neg.f64 b)))) (/.f64 (expm1.f64 (*.f64 eps (-.f64 a b))) (expm1.f64 (*.f64 eps a))))
(*.f64 (expm1.f64 (*.f64 eps (-.f64 a b))) (/.f64 eps (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps (neg.f64 b))))))
(/.f64 (*.f64 (neg.f64 eps) (-.f64 (exp.f64 (*.f64 (+.f64 a b) (neg.f64 eps))) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a (neg.f64 eps))) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b (neg.f64 eps))) #s(literal 1 binary64))))
(*.f64 (/.f64 (neg.f64 eps) (expm1.f64 (*.f64 eps (neg.f64 a)))) (/.f64 (expm1.f64 (*.f64 (+.f64 a b) (neg.f64 eps))) (expm1.f64 (*.f64 eps (neg.f64 b)))))
(*.f64 (expm1.f64 (*.f64 eps (neg.f64 (+.f64 a b)))) (/.f64 (neg.f64 eps) (*.f64 (expm1.f64 (*.f64 a (neg.f64 eps))) (expm1.f64 (*.f64 eps (neg.f64 b))))))
(*.f64 eps (/.f64 (expm1.f64 (*.f64 eps (neg.f64 (+.f64 a b)))) (*.f64 (expm1.f64 (*.f64 eps (neg.f64 b))) (neg.f64 (expm1.f64 (*.f64 a (neg.f64 eps)))))))
(*.f64 eps (/.f64 (expm1.f64 (*.f64 eps (-.f64 (neg.f64 b) a))) (*.f64 (expm1.f64 (*.f64 eps (neg.f64 a))) (neg.f64 (expm1.f64 (*.f64 eps (neg.f64 b)))))))
(neg.f64 (/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 (neg.f64 a) b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 (neg.f64 a) eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64)))))
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (+.f64 b (neg.f64 a))))) (neg.f64 (*.f64 (expm1.f64 (*.f64 eps b)) (expm1.f64 (*.f64 eps (neg.f64 a))))))
(*.f64 (expm1.f64 (*.f64 eps (-.f64 b a))) (/.f64 eps (*.f64 (expm1.f64 (*.f64 eps b)) (neg.f64 (expm1.f64 (*.f64 a (neg.f64 eps)))))))
(*.f64 eps (/.f64 (expm1.f64 (*.f64 eps (-.f64 b a))) (*.f64 (expm1.f64 (*.f64 eps b)) (neg.f64 (expm1.f64 (*.f64 eps (neg.f64 a)))))))
(neg.f64 (/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a (neg.f64 b)) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 (neg.f64 b) eps)) #s(literal 1 binary64)))))
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (-.f64 a b)))) (neg.f64 (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps (neg.f64 b))))))
(*.f64 eps (/.f64 (expm1.f64 (*.f64 eps (-.f64 a b))) (*.f64 (expm1.f64 (*.f64 eps a)) (neg.f64 (expm1.f64 (*.f64 eps (neg.f64 b)))))))
(*.f64 (expm1.f64 (*.f64 eps (-.f64 a b))) (/.f64 eps (*.f64 (expm1.f64 (*.f64 eps a)) (neg.f64 (expm1.f64 (*.f64 eps (neg.f64 b)))))))
(*.f64 (expm1.f64 (*.f64 eps (-.f64 a b))) (/.f64 (neg.f64 eps) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps (neg.f64 b))))))
(neg.f64 (/.f64 (*.f64 (neg.f64 eps) (-.f64 (exp.f64 (*.f64 (+.f64 a b) (neg.f64 eps))) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a (neg.f64 eps))) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b (neg.f64 eps))) #s(literal 1 binary64)))))
(/.f64 (*.f64 (neg.f64 eps) (expm1.f64 (*.f64 (+.f64 a b) (neg.f64 eps)))) (neg.f64 (*.f64 (expm1.f64 (*.f64 eps (neg.f64 a))) (expm1.f64 (*.f64 eps (neg.f64 b))))))
(/.f64 (*.f64 eps (expm1.f64 (*.f64 eps (neg.f64 (+.f64 a b))))) (*.f64 (expm1.f64 (*.f64 a (neg.f64 eps))) (expm1.f64 (*.f64 eps (neg.f64 b)))))
(*.f64 (expm1.f64 (*.f64 eps (neg.f64 (+.f64 a b)))) (/.f64 (/.f64 eps (expm1.f64 (*.f64 a (neg.f64 eps)))) (expm1.f64 (*.f64 eps (neg.f64 b)))))
(*.f64 eps (/.f64 (/.f64 (expm1.f64 (*.f64 eps (-.f64 (neg.f64 b) a))) (expm1.f64 (*.f64 eps (neg.f64 b)))) (expm1.f64 (*.f64 eps (neg.f64 a)))))
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 b a) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64))))
(*.f64 (/.f64 eps (expm1.f64 (*.f64 eps b))) (/.f64 (expm1.f64 (*.f64 eps (+.f64 a b))) (expm1.f64 (*.f64 eps a))))
(*.f64 (expm1.f64 (*.f64 eps (+.f64 a b))) (/.f64 eps (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b)))))
(/.f64 (*.f64 a (-.f64 (exp.f64 (*.f64 (+.f64 eps b) a)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b a)) #s(literal 1 binary64))))
(*.f64 a (/.f64 (expm1.f64 (*.f64 a (+.f64 eps b))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 a b)))))
(*.f64 (expm1.f64 (*.f64 a (+.f64 eps b))) (/.f64 a (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 a b)))))
(/.f64 (*.f64 b (-.f64 (exp.f64 (*.f64 (+.f64 a eps) b)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a b)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 eps b)) #s(literal 1 binary64))))
(*.f64 (/.f64 b (expm1.f64 (*.f64 a b))) (/.f64 (expm1.f64 (*.f64 b (+.f64 eps a))) (expm1.f64 (*.f64 eps b))))
(*.f64 b (/.f64 (expm1.f64 (*.f64 b (+.f64 eps a))) (*.f64 (expm1.f64 (*.f64 eps b)) (expm1.f64 (*.f64 a b)))))
(*.f64 (expm1.f64 (*.f64 b (+.f64 eps a))) (/.f64 b (*.f64 (expm1.f64 (*.f64 eps b)) (expm1.f64 (*.f64 a b)))))
Symmetry

(sort a b)

explain580.0ms (1.9%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
2280-3(4.0824814665096597e-73 2.4217370421179603e-63 2.1778427483218656e-92)(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
1541(-1.7536105133093417e-50 2.4783750073370206e-251 2.0698020708158077e-273)0-(-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64))
1231(-1.7536105133093417e-50 2.4783750073370206e-251 2.0698020708158077e-273)0-(-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64))
1210-0-(-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))
00-0-b
00-0-(exp.f64 (*.f64 b eps))
00-0-(*.f64 (+.f64 a b) eps)
00-0-(*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64)))
00-0-(*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64)))
00-0-eps
00-0-(exp.f64 (*.f64 (+.f64 a b) eps))
00-0-(*.f64 a eps)
00-0-#s(literal 1 binary64)
00-0-(exp.f64 (*.f64 a eps))
00-0-a
00-0-(*.f64 b eps)
00-0-(+.f64 a b)
Results
403.0ms364×2048valid
60.0ms108×1024valid
10.0ms30×512valid
10.0ms4096valid
1.0ms256valid
Compiler

Compiled 233 to 53 computations (77.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 361.0ms
ival-exp: 240.0ms (66.5% of total)
ival-mult: 68.0ms (18.9% of total)
ival-sub: 31.0ms (8.6% of total)
ival-add: 11.0ms (3% of total)
ival-div: 9.0ms (2.5% of total)
const: 3.0ms (0.8% of total)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
0.0%
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
Compiler

Compiled 54 to 34 computations (37% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative
+-commutative
unsub-neg
sub-neg
1-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02497
13997
24597
34897
45197
55697
Stop Event
saturated
Calls
Call 1
Inputs
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
Outputs
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 b eps)) #s(literal 1 binary64))))
(/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 eps (+.f64 a b))) #s(literal 1 binary64))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) #s(literal 1 binary64)) (-.f64 (exp.f64 (*.f64 eps b)) #s(literal 1 binary64))))
(/.f64 (*.f64 eps (+.f64 (exp.f64 (*.f64 eps (+.f64 a b))) #s(literal -1 binary64))) (*.f64 (+.f64 (exp.f64 (*.f64 eps a)) #s(literal -1 binary64)) (+.f64 (exp.f64 (*.f64 eps b)) #s(literal -1 binary64))))

soundness0.0ms (0%)

Stop Event
fuel
Compiler

Compiled 27 to 17 computations (37% saved)

preprocess29.0ms (0.1%)

Remove

(sort a b)

Compiler

Compiled 236 to 150 computations (36.4% saved)

end0.0ms (0%)

Profiling

Loading profile data...