[R] Erroneous results using 64-bit "sspline" package
Jeff Newmiller
jdnewmil at dcn.davis.ca.us
Sat May 19 06:33:54 CEST 2012
The smooth.sspline function in sspline v0.1-5 is giving different results
depending whether I run it in 32-bit or 64-bit platform. Correct results
(TRUE result below) occur on the 32-bit platform. I have run it on
Windows 7 x32 +R2.15.0 (works) and R2.14.2 (works), Windows 7 x64 +R2.15.0
(does not work) and R2.14.2 (does not work), and Ubuntu 12.04 x64 +R2.15.0
(does not work). "Does not work" means it gives results that are
sometimes off by dozens of orders of magnitude (and sometimes the sign).
A test case is given below.
The library uses Fortran subroutines, and I am not familiar with
interfacing Fortran with R, so I hope there is someone who is familiar and
has an x64 platform to debug with can take a look at it.
library(sspline)
dlon <- 125.4637
dlat <- 6.93252
grd <- structure(list(lonr = c(125.25, 125.25, 125.25, 125.25, 125.25,
125.333333333333, 125.333333333333, 125.333333333333, 125.333333333333,
125.333333333333, 125.416666666667, 125.416666666667, 125.416666666667,
125.416666666667, 125.416666666667, 125.5, 125.5, 125.5, 125.5,
125.5, 125.583333333333, 125.583333333333, 125.583333333333,
125.583333333333, 125.583333333333), latr = c(6.75, 6.83333333333333,
6.91666666666667, 7, 7.08333333333333, 6.75, 6.83333333333333,
6.91666666666667, 7, 7.08333333333333, 6.75, 6.83333333333333,
6.91666666666667, 7, 7.08333333333333, 6.75, 6.83333333333333,
6.91666666666667, 7, 7.08333333333333, 6.75, 6.83333333333333,
6.91666666666667, 7, 7.08333333333333), value = c(3.75, 3.65,
3.7, 3.7, 3.75, 3.75, 3.45, 3.6, 3.55, 3.65, 3.95, 3.7, 3.75,
3.75, 3.8, 3.95, 4.1, 3.8, 3.85, 3.8, 3.95, 4, 4.05, 3.95, 3.85
)), .Names = c("lonr", "latr", "value"), row.names = c(271L,
272L, 273L, 274L, 275L, 297L, 298L, 299L, 300L, 301L, 323L, 324L,
325L, 326L, 327L, 349L, 350L, 351L, 352L, 353L, 375L, 376L, 377L,
378L, 379L), class = "data.frame")
linkespline <- smooth.sspline( grd$lonr, grd$latr, grd$value )
all.equal( 3.800515, predict.smooth.sspline( linkespline, dlon, dlat ),
tolerance=0.001 )
---------------------------------------------------------------------------
Jeff Newmiller The ..... ..... Go Live...
DCN:<jdnewmil at dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go...
Live: OO#.. Dead: OO#.. Playing
Research Engineer (Solar/Batteries O.O#. #.O#. with
/Software/Embedded Controllers) .OO#. .OO#. rocks...1k
More information about the R-help
mailing list