[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