Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions inst/tests/froll.Rraw
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,9 @@ if (exists("test.data.table", .GlobalEnv, inherits=FALSE)) {
froll = data.table:::froll
}

exact_NaN = isTRUE(capabilities()["long.double"]) && identical(as.integer(.Machine$longdouble.digits), 64L)
exact_NaN = identical(NA_real_+0, NA_real_)
if (!exact_NaN) {
cat("\n**** Skipping 8 NaN/NA algo='exact' tests because .Machine$longdouble.digits==", .Machine$longdouble.digits, " (!=64); e.g. under valgrind\n\n", sep="")
# for Matt when he runs valgrind it is 53, but 64 when running regular R
# froll.c uses long double and appears to require full long double accuracy in the algo='exact'
cat("\n**** Skipping 10 NaN/NA algo='exact' tests because NaN payload doesn't propagate through arithmetic operations\n\n")
}

## rolling features
Expand Down Expand Up @@ -1456,8 +1454,10 @@ test(6001.731, between(frollvar(y, 3)[4L], 0, 1e-7))
test(6001.732, between(frollsd(y, 3)[4L], 0, 1e-7))
test(6001.733, frollvar(y, c(3,3,3,3), adaptive=TRUE)[4L], 0)
test(6001.734, frollsd(y, c(3,3,3,3), adaptive=TRUE)[4L], 0)
test(6001.740, frollvar(c(1.5,2.5,2,NA), c(3,3)), list(c(NA,NA,0.25,NA), c(NA,NA,0.25,NA)), output="running sequentially, because outer parallelism has been used", options=c(datatable.verbose=TRUE)) # ensure no nested parallelism in rolling functions #7352
test(6001.741, frollsd(c(1.5,2.5,2,NA), c(3,3)), list(c(NA,NA,0.5,NA), c(NA,NA,0.5,NA)), output="running sequentially, because outer parallelism has been used", options=c(datatable.verbose=TRUE))
if (exact_NaN) {
test(6001.740, frollvar(c(1.5,2.5,2,NA), c(3,3)), list(c(NA,NA,0.25,NA), c(NA,NA,0.25,NA)), output="running sequentially, because outer parallelism has been used", options=c(datatable.verbose=TRUE)) # ensure no nested parallelism in rolling functions #7352
test(6001.741, frollsd(c(1.5,2.5,2,NA), c(3,3)), list(c(NA,NA,0.5,NA), c(NA,NA,0.5,NA)), output="running sequentially, because outer parallelism has been used", options=c(datatable.verbose=TRUE))
}
test(6001.742, frollvar(c(1.5,2.5,2,1.5), c(3,3)), list(c(NA,NA,0.25,0.25), c(NA,NA,0.25,0.25)), notOutput="running sequentially, because outer parallelism has been used", options=c(datatable.verbose=TRUE)) # no NA - no fallback to exact
test(6001.743, frollsd(c(1.5,2.5,2,1.5), c(3,3)), list(c(NA,NA,0.5,0.5), c(NA,NA,0.5,0.5)), notOutput="running sequentially, because outer parallelism has been used", options=c(datatable.verbose=TRUE))
test(6001.744, frollvar(c(1.5,2.5,2,NA), 3), c(NA,NA,0.25,NA), notOutput="running sequentially, because outer parallelism has been used", options=c(datatable.verbose=TRUE)) # not vectorized - no outer parallelism
Expand Down
8 changes: 0 additions & 8 deletions inst/tests/frollBatch.Rraw
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,6 @@ if (exists("test.data.table", .GlobalEnv, inherits=FALSE)) {
froll = data.table:::froll
}

exact_NaN = isTRUE(capabilities()["long.double"]) && identical(as.integer(.Machine$longdouble.digits), 64L)
if (!exact_NaN) {
cat("\n**** Skipping 7 NaN/NA algo='exact' tests because .Machine$longdouble.digits==", .Machine$longdouble.digits, " (!=64); e.g. under valgrind\n\n", sep="")
# for Matt when he runs valgrind it is 53, but 64 when running regular R
# froll.c uses long double and appears to require full long double accuracy in the algo='exact'
}


## batch validation
set.seed(108)
makeNA = function(x, ratio=0.1, nf=FALSE) {
Expand Down
12 changes: 7 additions & 5 deletions inst/tests/tests.Rraw
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,11 @@ if (!test_longdouble) {
cat("\n**** Full long double accuracy is not available. Tests using this will be skipped.\n\n")
# e.g. under valgrind, longdouble.digits==53; causing these to fail: 1262, 1729.04, 1729.08, 1729.09, 1729.11, 1729.13, 1830.7; #4639
}
exact_NA = identical(NA_real_ + 0, NA_real_)
if (!exact_NA) {
cat("\n**** NaN payload does not propagate through arithmetic operations. Tests requiring NA not to decay to NaN will be skipped.\n\n")
# e.g. on riscv64
}

tt = Sys.getenv("TZ", unset=NA)
TZnotUTC = !identical(tt,"") && !is_utc(tt)
Expand Down Expand Up @@ -1957,12 +1962,9 @@ basemean = base::mean # to isolate time of `::` itself
ans3 = DT[,list(basemean(x),basemean(y)),by=list(grp1,grp2)]
test(646, ans1, ans2)
test(647, ans1, ans3)
if (test_longdouble) {
if (exact_NA) {
test(648, anyNA(ans1$V1) && !any(is.nan(ans1$V1)))
# used to error with `valgrind` because of the 'long double' usage in gsumm.c (although I wonder if we need long double precision).
# it doesn't seem to error under valgrind anymore so the test_longdouble may be removable
# http://valgrind.org/docs/manual/manual-core.html#manual-core.limits
# http://comments.gmane.org/gmane.comp.debugging.valgrind/10340
# Valgrind may have had NaN payload propagation problems in the past; RISC-V will in the future
}
ans1 = DT[,list(mean(x,na.rm=TRUE),mean(y,na.rm=TRUE)),by=list(grp1,grp2)]
ans2 = DT[,list(mean.default(x,na.rm=TRUE),mean.default(y,na.rm=TRUE)),by=list(grp1,grp2)]
Expand Down
Loading