[R-SIG-Mac] Problem with GSUB in PEIP
Lees, Jonathan M
jonathan.lees at unc.edu
Tue May 5 13:01:18 CEST 2015
Thank you for your kind remarks - I will do my best to
fix this hack.
I was not familiar Makevars/Lapack - a good example would be useful.
I will also provide example tests, no problem.
Jonathan
==========================================
Prof. Jonathan M. Lees
Chair, Department of Geological Sciences
CB #3315, Mitchell Hall
University of North Carolina
Chapel Hill, NC 27599-3315
(919) 962-1562
(919) 962-3869 (Chair Office)
FAX (919) 966-4519
jonathan_lees at unc.edu
http://www.unc.edu/~leesj
==========================================
On 5/5/15, 4:07 AM, "Berend Hasselman" <bhh at xs4all.nl> wrote:
>
>> On 04-05-2015, at 22:22, Simon Urbanek <simon.urbanek at r-project.org>
>>wrote:
>>
>> You may want to report to the maintainer - the GSVD sources have the
>>following which is completely broken:
>>
>>> GSVD
>> function (A, B)
>> {
>> SS = Sys.info()
>> ssysname = SS[[1]]
>> if (ssysname == "Linux") {
>> lpath = paste(R.home(), "/lib/libRlapack.so", sep = "")
>> }
>> else {
>> lpath = paste(R.home(), "lib/i386/libRlapack.dylib",
>> sep = "")
>> }
>> [...]
>> dyn.load(lpath)
>>
>> It seems like the author failed to use the proper flags for linking
>>LAPACK and then tried to hack around it in a horrible way that doesn't
>>really work.
>>
>> I suppose this happens when you don't even have a single test that a
>>particular function works otherwise CRAN checks would not allow it in...
>
>Correct.
>
>And there is another issue with GSVD: it uses .Fortran to call the Lapack
>routine dggsvd with as.character(..) for the dggsvd
>Fortran character arguments. This is not guaranteed to work on all
>platforms.
>I ran into this with my package geigen.
>
>A solution is to write a wrapper around dggsvd in Fortran that accepts
>integer arguments for the JOB? options and converts these in the Fortran
>wrapper to the appropriate Lapack characters. You can then use a Makevars
>file to specify that your fortran code needs the Lapack library which
>would save you from the error prone method in PEIP.
>
>And test your function that it works and is able to handle input errors.
>
>Berend
>
More information about the R-SIG-Mac
mailing list