When building PDL-LinearAlgebra-0.12 / lapack-3.7.0 / gcc-7.1.0 / mingw-w64-v5.0.2 / perl-5.26.0-RC1 I got:
Real.o:Real.c:(.text+0x85f17): undefined reference to `dggsvd_'
Real.o:Real.c:(.text+0x870b7): undefined reference to `sggsvd_'
collect2.exe: error: ld returned 1 exit status
It appears that these routines have been replaced by BLAS3 versions since LAPACK 3.6.0:
Is it just about replacing dggsvd_ >> dggsvd3_ and sggsvd_ >> sggsvd3_ ?
Looks like there is a change in the args relating to WORK, LWORK, IWORK, and INFO.
See
http://www.netlib.org/lapack/explore-html/d1/d7e/group__double_g_esing_ga4a187519e5c71da3b3f67c85e9baf0f2.html#ga4a187519e5c71da3b3f67c85e9baf0f2
and
http://www.netlib.org/lapack/explore-html/dd/db4/dggsvd_8f_a5c6cd585c1b6abe0895aceab02e9371a.html#a5c6cd585c1b6abe0895aceab02e9371a
OK. So, do we want to drop PDL function "ggsvd" and introduce "ggsvd3" or
keep PDL function "ggsvd" and use "ggsvd3" behind the curtain? O both (keep
PDL's "ggsvd" + add "ggsvd3")
--
kmx
BTW: if you want to test - lapack-3.7.0 / gcc-7.1.0 / mingw-w64-v5.0.2 /
perl-5.26.0-RC1 - you might be interested in:
http://strawberryperl.com/download/5.26.0.1/strawberry-perl-5.26.0.1RC1-64bit-PDL.zip
I guess it should be possible to add back compatibility for ggsvd and all with wrappers around ggsvd3. Unfortunately, I'm not able to help out with something quickly since I inherited the PDL::LinearAlgebra from its original author but am not an active LAPACK user.
The simplest might be to follow the lapack lead and just add ggsvd3 bindings to PDL::LInearAlgebra and some logic to enable routines based on the underlying lapack version
@kmx: I think that there is an option to include the deprecated routines in your lapack library. That would give a bit more time to get the real solution in place. (It appears cygwin has 3.7.0 lapack an both the dggsvd and gddsvd3 routines). See https://bugs.archlinux.org/task/47087 where it looks like adding BUILD_DEPRECATED=ON to the CMake options should make things work.
Exactly, BUILD_DEPRECATED=ON is what I need, thanks.
This matter will now be tracked at https://github.com/PDLPorters/pdl/issues/221