[Issue 3749] cannot evaluate yl2x (log) and exp functions at compile time
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Jan 31 08:03:29 PST 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3749
--- Comment #5 from Witold Baryluk <baryluk at smp.if.uj.edu.pl> 2010-01-31 08:03:28 PST ---
Small but important error in unittest (c was not multiplied correctly. Also
-300..300 range was somehow too big, compilations was very long.
int tests(double[] xs, int min, int max) {
assert(min <= max);
int r = 0;
double c = 1.0;
if (min < 0) {
for (int i = 0; i < -min; i++) {
c = c / 2.0;
}
}
if (min > 0) {
for (int i = 0; i < min; i++) {
c = c * 2.0;
}
}
for (int i = min; i <= max; i++) {
foreach (x0; xs) {
auto x = c * x0;
if ( (ctfe_exp(ctfe_log(x)) - x) / x < 1.0e-16 ) {
;
} else {
r = r + 1;
}
}
c = c * 2.0;
}
return r;
}
unittest {
enum c = tests(
[0.1, 0.1001, 0.11, 0.2, 0.24, 0.3, 0.341, 0.387123, 0.4,
0.5, 0.55, 0.6, 0.7, 0.732, 0.8, 0.88, 0.9, 0.98, 0.9991, 0.999992],
-30, 30);
static assert(c == 0);
}
static assert(ctfe_exp(0.0) == 1.0);
static assert(ctfe_exp(-1000.0) == 0.0);
static assert(ctfe_exp(1000.0) == double.infinity);
static assert(ctfe_log(0.0) == -double.infinity);
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list