Re: [Rd] stats::fft produces inconsistent results
This is a long shot, but here's a plausible scenario: as part of its pipeline, ravetools::mvfftw computes the mean of the input vector **and then centers it to a mean of zero** (intentionally or accidentally?) because variables are passed to compiled code by reference (someone can feel free to correct my terminology), this means that the original vector in R now has a mean of zero the first element of fft() is mean(x)*length(x), so if mean(x) has been forced to zero, that would explain your issue. I don't know about the non-reproducibility part. On 10/19/21 7:06 PM, Dipterix Wang wrote: Dear R-devel Team, I'm developing a neuroscience signal pipeline package in R (https://github.com/dipterix/ravetools) and I noticed a weird issue that failed my unit test. Basically I was trying to use `fftw3` library to implement fast multivariate fft function in C++. When I tried to compare my results with stats::fft, the test result showed the first element of **expected** (which was produced by stats::fft) was zero, which, I am pretty sure, is wrong, and I can confirm that my function produces correct results. However, somehow I couldn’t reproduce this issue on my personal computer (osx, M1, R4.1.1), the error simply went away. The catch is my function produced consistent and correct results but stats::fft was not. This does not mean `stats::fft` has bugs. Instead, I suspect there could be some weird interactions between my code and stats::fft at C/C++ level, but I couldn’t figure it out why. +++ Details: Here’s the code I used for the test: https://github.com/dipterix/ravetools/blob/4dc35d64763304aff869d92dddad38a7f2b30637/tests/testthat/test-fftw.R#L33-L41 Test code set.seed(1) x <- rnorm(1000) dim(x) <- c(100,10) a <- ravetools:::mvfftw_r2c(x, 0) c <- apply(x, 2, stats::fft)[1:51,] expect_equal(a, c) Here are the tests that gave me the errors: The test logs on win-builder https://win-builder.r-project.org/07586ios8AbL/00check.log Test logs on GitHub https://github.com/dipterix/ravetools/runs/3944874310?check_suite_focus=true —— Failed tests —— -- Failure (test-fftw.R:41:3): mvfftw_r2c -- `a` (`actual`) not equal to `c` (`expected`). actual vs expected [,1][,2] [,3] [,4]... - actual[1, ] 10.8887367+ 0.000i -3.7808077+ 0.000i 2.967354+ 0.00i 5.160186+ 0.00i ... + expected[1, ]0.000+ 0.000i -3.7808077+ 0.000i 2.967354+ 0.00i 5.160186+ 0.00i... The first columns are different, `actual` is the results I produced via `ravetools:::mvfftw_r2c`, and `expected` was produced by `stats::fft` Any help or attention is very much appreciated. Thanks, - Zhengjia __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel -- Dr. Benjamin Bolker Professor, Mathematics & Statistics and Biology, McMaster University Director, School of Computational Science and Engineering Graduate chair, Mathematics & Statistics __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] stats::fft produces inconsistent results
Dear R-devel Team, I'm developing a neuroscience signal pipeline package in R (https://github.com/dipterix/ravetools) and I noticed a weird issue that failed my unit test. Basically I was trying to use `fftw3` library to implement fast multivariate fft function in C++. When I tried to compare my results with stats::fft, the test result showed the first element of **expected** (which was produced by stats::fft) was zero, which, I am pretty sure, is wrong, and I can confirm that my function produces correct results. However, somehow I couldn’t reproduce this issue on my personal computer (osx, M1, R4.1.1), the error simply went away. The catch is my function produced consistent and correct results but stats::fft was not. This does not mean `stats::fft` has bugs. Instead, I suspect there could be some weird interactions between my code and stats::fft at C/C++ level, but I couldn’t figure it out why. +++ Details: Here’s the code I used for the test: https://github.com/dipterix/ravetools/blob/4dc35d64763304aff869d92dddad38a7f2b30637/tests/testthat/test-fftw.R#L33-L41 Test code set.seed(1) x <- rnorm(1000) dim(x) <- c(100,10) a <- ravetools:::mvfftw_r2c(x, 0) c <- apply(x, 2, stats::fft)[1:51,] expect_equal(a, c) Here are the tests that gave me the errors: The test logs on win-builder https://win-builder.r-project.org/07586ios8AbL/00check.log Test logs on GitHub https://github.com/dipterix/ravetools/runs/3944874310?check_suite_focus=true —— Failed tests —— -- Failure (test-fftw.R:41:3): mvfftw_r2c -- `a` (`actual`) not equal to `c` (`expected`). actual vs expected [,1][,2] [,3] [,4]... - actual[1, ] 10.8887367+ 0.000i -3.7808077+ 0.000i 2.967354+ 0.00i 5.160186+ 0.00i ... + expected[1, ]0.000+ 0.000i -3.7808077+ 0.000i 2.967354+ 0.00i 5.160186+ 0.00i... The first columns are different, `actual` is the results I produced via `ravetools:::mvfftw_r2c`, and `expected` was produced by `stats::fft` Any help or attention is very much appreciated. Thanks, - Zhengjia __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
[Rd] Environment setting _R_CHECK_DEPENDS_ONLY_='true'
Setting Sys,setenv('_R_CHECK_DEPENDS_ONLY_'=‘true’) or Sys,setenv('_R_CHECK_DEPENDS_ONLY_’=TRUE) (either appear to be acceptable) appears to have no effect when I do, e.g. $R CMD check qra_0.2.4.tar.gz * using log directory ‘/Users/johnm1/pkgs/qra.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-apple-darwin17.0 (64-bit) * using session charset: UTF-8 . . . (This should have failed.) I’d have expected that the "On most systems . . .” mentioned in the Writing R extensions manual (1.1.3.1 Suggested packages) would include my setup. Any insight on what I am missing will be welcome. John Maindonald email: john.maindon...@anu.edu.au __ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel