For a while I have been getting that the complex tests fails on RHEL 6. The specific issue has to do with tanh (see below for full output from complex.Rout.fail). This is both with the stock compiler (GCC 4.4.7) and a compiler supplied through the conda project (GCC 4.8.5). The compiler supplied through conda ends up linking R to certain system files, so the binary is not completely independent (although most dynamically linked libraries are coming from the conda installation). A search on R-devel reveals a discussion in April on an issue reported on Windows with a bug in tanh in old versions of the GNU C standard library; this seems relevant. The discussion by Martin Maechler suggest "using R's internal substitute". So how do I enable this? Or does this requires updating the C standard library? ** From complex.Rout.fail> stopifnot(identical(tanh(356+0i), 1+0i))Error: identical(tanh(356 + (0+0i)), 1 + (0+0i)) is not TRUE In addition: Warning message: In tanh(356 + (0+0i)) : NaNs produced in function "tanh" Execution halted Best, Kasper [[alternative HTML version deleted]]
As a quick fix, you can undefine HAVE_CTANH in complex.c, somewhere after including config.h An internal substitute, which is implemented inside complex.c, will be used. Best Tomas On 05/04/2017 02:57 PM, Kasper Daniel Hansen wrote:> For a while I have been getting that the complex tests fails on RHEL 6. > The specific issue has to do with tanh (see below for full output from > complex.Rout.fail). > > This is both with the stock compiler (GCC 4.4.7) and a compiler supplied > through the conda project (GCC 4.8.5). The compiler supplied through conda > ends up linking R to certain system files, so the binary is not completely > independent (although most dynamically linked libraries are coming from the > conda installation). > > A search on R-devel reveals a discussion in April on an issue reported on > Windows with a bug in tanh in old versions of the GNU C standard library; > this seems relevant. The discussion by Martin Maechler suggest "using R's > internal substitute". So how do I enable this? Or does this requires > updating the C standard library? > > ** From complex.Rout.fail > >> stopifnot(identical(tanh(356+0i), 1+0i)) > Error: identical(tanh(356 + (0+0i)), 1 + (0+0i)) is not TRUE > In addition: Warning message: > In tanh(356 + (0+0i)) : NaNs produced in function "tanh" > Execution halted > > Best, > Kasper > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
Thanks. I assume there is no way to control this via. environment variables or configure settings? Obviously that would be great for something like this which affects tests and seems to be a known problem for older C standard libraries. Best, Kasper On Thu, May 4, 2017 at 9:12 AM, Tomas Kalibera <tomas.kalibera at gmail.com> wrote:> > As a quick fix, you can undefine HAVE_CTANH in complex.c, somewhere after > including config.h > An internal substitute, which is implemented inside complex.c, will be > used. > > Best > Tomas > > > > > On 05/04/2017 02:57 PM, Kasper Daniel Hansen wrote: > >> For a while I have been getting that the complex tests fails on RHEL 6. >> The specific issue has to do with tanh (see below for full output from >> complex.Rout.fail). >> >> This is both with the stock compiler (GCC 4.4.7) and a compiler supplied >> through the conda project (GCC 4.8.5). The compiler supplied through >> conda >> ends up linking R to certain system files, so the binary is not completely >> independent (although most dynamically linked libraries are coming from >> the >> conda installation). >> >> A search on R-devel reveals a discussion in April on an issue reported on >> Windows with a bug in tanh in old versions of the GNU C standard library; >> this seems relevant. The discussion by Martin Maechler suggest "using R's >> internal substitute". So how do I enable this? Or does this requires >> updating the C standard library? >> >> ** From complex.Rout.fail >> >> stopifnot(identical(tanh(356+0i), 1+0i)) >>> >> Error: identical(tanh(356 + (0+0i)), 1 + (0+0i)) is not TRUE >> In addition: Warning message: >> In tanh(356 + (0+0i)) : NaNs produced in function "tanh" >> Execution halted >> >> Best, >> Kasper >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > > >[[alternative HTML version deleted]]