1*8f4c8dbaSBarry Smith /* $Id: plapack.h,v 1.19 1996/04/09 23:15:24 bsmith Exp bsmith $ */ 2a1e12872SBarry Smith /* 3c0581c19SLois Curfman McInnes This file provides some name space protection from LAPACK and BLAS and 4c0581c19SLois Curfman McInnes allows the appropriate single or double precision version to be used. 5c0581c19SLois Curfman McInnes This file also deals with different Fortran 77 naming conventions on machines. 65392566eSBarry Smith 75392566eSBarry Smith Another problem is charactor strings are represented differently on 85392566eSBarry Smith on some machines in C and Fortran 77. This problem comes up on the 95392566eSBarry Smith Cray T3D. Yet another reason to hate ... 105392566eSBarry Smith 11a1e12872SBarry Smith */ 12a1e12872SBarry Smith #if !defined(_PLAPACK_H) 13a1e12872SBarry Smith #define _PLAPACK_H 14a1e12872SBarry Smith 1519b02663SBarry Smith #include "petsc.h" 16a1e12872SBarry Smith 17*8f4c8dbaSBarry Smith /* 18*8f4c8dbaSBarry Smith This include file on the Cray T3D defines the interface between 19*8f4c8dbaSBarry Smith Fortran and C representations of charactor strings. 20*8f4c8dbaSBarry Smith */ 21*8f4c8dbaSBarry Smith #if defined(USES_CPTOFCD) 225392566eSBarry Smith #include "fortran.h" 235392566eSBarry Smith #endif 245392566eSBarry Smith 25a1e12872SBarry Smith #if !defined(PETSC_COMPLEX) 264eeb42bcSBarry Smith 274eeb42bcSBarry Smith /* 284eeb42bcSBarry Smith These are real case with no character string arguments 294eeb42bcSBarry Smith */ 30*8f4c8dbaSBarry Smith 31*8f4c8dbaSBarry Smith #if defined(USES_FORTRAN_SINGLE) 32*8f4c8dbaSBarry Smith /* 33*8f4c8dbaSBarry Smith For these machines we must call the single precision Fortran version 34*8f4c8dbaSBarry Smith */ 35*8f4c8dbaSBarry Smith #define DGEQRF SGEQRF 36*8f4c8dbaSBarry Smith #define DGETRF SGETRF 37*8f4c8dbaSBarry Smith #define DDOT SDOT 38*8f4c8dbaSBarry Smith #define DNRM2 SNRM2 39*8f4c8dbaSBarry Smith #define DSCAL SSCAL 40*8f4c8dbaSBarry Smith #define DCOPY SCOPY 41*8f4c8dbaSBarry Smith #define DSWAP SSWAP 42*8f4c8dbaSBarry Smith #define DAXPY SAXPY 43*8f4c8dbaSBarry Smith #define DASUM SASUM 44*8f4c8dbaSBarry Smith #define DSORMQR SORMQR 45*8f4c8dbaSBarry Smith #define DTRTRS STRTRS 46*8f4c8dbaSBarry Smith #define DPOTRF SPOTRF 47*8f4c8dbaSBarry Smith #define DPOTRS SPOTRS 48*8f4c8dbaSBarry Smith #define DGEMV SGEMV 49*8f4c8dbaSBarry Smith #define DGETRS SGETRS 50*8f4c8dbaSBarry Smith #define DGETRS SGETRS 51*8f4c8dbaSBarry Smith #define DGEMM SGEMM 52*8f4c8dbaSBarry Smith #define DGESVD SGESVD 53*8f4c8dbaSBarry Smith #define DTRMV STRMV 54*8f4c8dbaSBarry Smith #define DTRSL STRSL 55*8f4c8dbaSBarry Smith #endif 56*8f4c8dbaSBarry Smith 57*8f4c8dbaSBarry Smith #if defined(HAVE_FORTRAN_CAPS) 58c0534c1cSBarry Smith #define LAgeqrf_ DGEQRF 595392566eSBarry Smith #define LAgetrf_ DGETRF 60c0581c19SLois Curfman McInnes #define LAgetf2_ DGETF2 61a1e12872SBarry Smith #define BLdot_ DDOT 62a1e12872SBarry Smith #define BLnrm2_ DNRM2 63a1e12872SBarry Smith #define BLscal_ DSCAL 64a1e12872SBarry Smith #define BLcopy_ DCOPY 65a1e12872SBarry Smith #define BLswap_ DSWAP 66a1e12872SBarry Smith #define BLaxpy_ DAXPY 67a1e12872SBarry Smith #define BLasum_ DASUM 68227d817aSBarry Smith #elif !defined(HAVE_FORTRAN_UNDERSCORE) 69c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf 705392566eSBarry Smith #define LAgetrf_ dgetrf 71c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2 72a1e12872SBarry Smith #define BLdot_ ddot 73a1e12872SBarry Smith #define BLnrm2_ dnrm2 74a1e12872SBarry Smith #define BLscal_ dscal 75a1e12872SBarry Smith #define BLcopy_ dcopy 76a1e12872SBarry Smith #define BLswap_ dswap 77a1e12872SBarry Smith #define BLaxpy_ daxpy 78a1e12872SBarry Smith #define BLasum_ dasum 79a1e12872SBarry Smith #else 80c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 815392566eSBarry Smith #define LAgetrf_ dgetrf_ 82c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_ 83a1e12872SBarry Smith #define BLdot_ ddot_ 84a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 85a1e12872SBarry Smith #define BLscal_ dscal_ 86a1e12872SBarry Smith #define BLcopy_ dcopy_ 87a1e12872SBarry Smith #define BLswap_ dswap_ 88a1e12872SBarry Smith #define BLaxpy_ daxpy_ 89a1e12872SBarry Smith #define BLasum_ dasum_ 90a1e12872SBarry Smith #endif 91a1e12872SBarry Smith 924eeb42bcSBarry Smith /* 934eeb42bcSBarry Smith Real with character string arguments. 944eeb42bcSBarry Smith */ 95*8f4c8dbaSBarry Smith #if defined(USES_CPTOFCD) 96*8f4c8dbaSBarry Smith /* 97*8f4c8dbaSBarry Smith Note that this assumes that machines which use cptofcd() use 98*8f4c8dbaSBarry Smith the HAVE_FORTRAN_CAPS option. This is true on the Cray T3d. 99*8f4c8dbaSBarry Smith */ 100*8f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) DORMQR(_cptofcd((a),1),\ 101bbb6d6a8SBarry Smith _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 102*8f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 103c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 104*8f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 105*8f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1065392566eSBarry Smith (f),(g),(h)) 107*8f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1085392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 109*8f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1105392566eSBarry Smith (f),(g),(h),(i)) 111*8f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1124eeb42bcSBarry Smith (f),(g),(h),(i)) 113*8f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \ 1144eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 1154eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 116*8f4c8dbaSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGESVD(_cptofcd((a),1), \ 117af6b99e9SBarry Smith _cptofcd((a),1),(c),(d),(e),\ 118af6b99e9SBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 119*8f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 120*8f4c8dbaSBarry Smith #define LAtrsl_ DTRSL 121227d817aSBarry Smith #elif defined(HAVE_FORTRAN_CAPS) 122c0534c1cSBarry Smith #define LAormqr_ DORMQR 123c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 124a1e12872SBarry Smith #define LApotrf_ DPOTRF 125a1e12872SBarry Smith #define LApotrs_ DPOTRS 126a1e12872SBarry Smith #define LAgemv_ DGEMV 127a1e12872SBarry Smith #define LAgetrs_ DGETRS 128a1e12872SBarry Smith #define LAtrmv_ DTRMV 129a1e12872SBarry Smith #define LAtrsl_ DTRSL 130af6b99e9SBarry Smith #define LAgesvd_ DGESVD 1314eeb42bcSBarry Smith #define BLgemm_ DGEMM 132227d817aSBarry Smith #elif !defined(HAVE_FORTRAN_UNDERSCORE) 133c0534c1cSBarry Smith #define LAormqr_ dormqr 134c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 135a1e12872SBarry Smith #define LApotrf_ dpotrf 136a1e12872SBarry Smith #define LApotrs_ dpotrs 137a1e12872SBarry Smith #define LAgemv_ dgemv 138a1e12872SBarry Smith #define LAgetrs_ dgetrs 139a1e12872SBarry Smith #define LAtrmv_ dtrmv 140a1e12872SBarry Smith #define LAtrsl_ dtrsl 1414eeb42bcSBarry Smith #define BLgemm_ dgemm 142af6b99e9SBarry Smith #define LAgesvd_ dgesvd 143a1e12872SBarry Smith #else 144c0534c1cSBarry Smith #define LAormqr_ dormqr_ 145c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs_ 146a1e12872SBarry Smith #define LApotrf_ dpotrf_ 147a1e12872SBarry Smith #define LApotrs_ dpotrs_ 148a1e12872SBarry Smith #define LAgemv_ dgemv_ 149a1e12872SBarry Smith #define LAgetrs_ dgetrs_ 150a1e12872SBarry Smith #define LAtrmv_ dtrmv_ 151a1e12872SBarry Smith #define LAtrsl_ dtrsl_ 1524eeb42bcSBarry Smith #define BLgemm_ dgemm_ 153af6b99e9SBarry Smith #define LAgesvd_ dgesvd_ 154a1e12872SBarry Smith #endif 155a1e12872SBarry Smith 156a1e12872SBarry Smith #else 1574eeb42bcSBarry Smith /* 1584eeb42bcSBarry Smith Complex with no character string arguments 1594eeb42bcSBarry Smith */ 160*8f4c8dbaSBarry Smith #if defined(USES_FORTRAN_SINGLE) 161*8f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 162*8f4c8dbaSBarry Smith #define ZDOTC CDOTC 163*8f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 164*8f4c8dbaSBarry Smith #define ZSCAL CSCAL 165*8f4c8dbaSBarry Smith #define ZCOPY CCOPY 166*8f4c8dbaSBarry Smith #define ZSWAP CSWAP 167*8f4c8dbaSBarry Smith #define ZAXPY CAXPY 168*8f4c8dbaSBarry Smith #define DZASUM SCASUM 169*8f4c8dbaSBarry Smith #define ZGETRF CGETRF 170*8f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 171*8f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 172*8f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 173*8f4c8dbaSBarry Smith #define ZGEMV CGEMV 174*8f4c8dbaSBarry Smith #define ZGETRS CGETRS 175*8f4c8dbaSBarry Smith #define ZGEMM SGEMM 176*8f4c8dbaSBarry Smith #define ZTRMV CTRMV 177*8f4c8dbaSBarry Smith #define ZTRSL CTRSL 178*8f4c8dbaSBarry Smith #endif 179*8f4c8dbaSBarry Smith 180*8f4c8dbaSBarry Smith #if defined(HAVE_FORTRAN_CAPS) 181c0534c1cSBarry Smith #define LAgeqrf_ ZGEQRF 182a1e12872SBarry Smith #define BLdot_ ZDOTC 183a1e12872SBarry Smith #define BLnrm2_ DZNRM2 184a1e12872SBarry Smith #define BLscal_ ZSCAL 185a1e12872SBarry Smith #define BLcopy_ ZCOPY 186a1e12872SBarry Smith #define BLswap_ ZSWAP 187a1e12872SBarry Smith #define BLaxpy_ ZAXPY 188a1e12872SBarry Smith #define BLasum_ DZASUM 189227d817aSBarry Smith #elif !defined(HAVE_FORTRAN_UNDERSCORE) 190c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf 1915392566eSBarry Smith #define LAgetrf_ zgetrf 19208d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2 193a1e12872SBarry Smith #define BLdot_ zdotc 194a1e12872SBarry Smith #define BLnrm2_ dznrm2 195a1e12872SBarry Smith #define BLscal_ zscal 196a1e12872SBarry Smith #define BLcopy_ zcopy 197a1e12872SBarry Smith #define BLswap_ zswap 198a1e12872SBarry Smith #define BLaxpy_ zaxpy 199a1e12872SBarry Smith #define BLasum_ dzasum 200a1e12872SBarry Smith #else 201c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 2025392566eSBarry Smith #define LAgetrf_ zgetrf_ 20308d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 204a1e12872SBarry Smith #define BLdot_ zdotc_ 205a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 206a1e12872SBarry Smith #define BLscal_ zscal_ 207a1e12872SBarry Smith #define BLcopy_ zcopy_ 208a1e12872SBarry Smith #define BLswap_ zswap_ 209a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 210a1e12872SBarry Smith #define BLasum_ dzasum_ 211a1e12872SBarry Smith #endif 212a1e12872SBarry Smith 213*8f4c8dbaSBarry Smith #if defined(USES_CTOPFCD) 214*8f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 215c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 216*8f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 217*8f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2185392566eSBarry Smith (f),(g),(h)) 219*8f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 2205392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 221*8f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2225392566eSBarry Smith (f),(g),(h),(i)) 223*8f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \ 2244eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 2254eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 226*8f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 227*8f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 228227d817aSBarry Smith #elif defined(HAVE_FORTRAN_CAPS) 229c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 230a1e12872SBarry Smith #define LApotrf_ ZPOTRF 231a1e12872SBarry Smith #define LApotrs_ ZPOTRS 232a1e12872SBarry Smith #define LAgemv_ ZGEMV 233a1e12872SBarry Smith #define LAgetrf_ ZGETRF 23408d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 235a1e12872SBarry Smith #define LAgetrs_ ZGETRS 236a1e12872SBarry Smith #define LAtrmv_ ZTRMV 237a1e12872SBarry Smith #define LAtrsl_ ZTRSL 2385a778de9SBarry Smith #define BLgemm_ ZGEMM 239227d817aSBarry Smith #elif !defined(HAVE_FORTRAN_UNDERSCORE) 240c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 241a1e12872SBarry Smith #define LApotrf_ zpotrf 242a1e12872SBarry Smith #define LApotrs_ zpotrs 243a1e12872SBarry Smith #define LAgemv_ zgemv 244a1e12872SBarry Smith #define LAgetrs_ zgetrs 245a1e12872SBarry Smith #define LAtrmv_ ztrmv 246a1e12872SBarry Smith #define LAtrsl_ ztrsl 2475a778de9SBarry Smith #define BLgemm_ zgemm 248a1e12872SBarry Smith #else 249c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs_ 250a1e12872SBarry Smith #define LApotrf_ zpotrf_ 251a1e12872SBarry Smith #define LApotrs_ zpotrs_ 252a1e12872SBarry Smith #define LAgemv_ zgemv_ 253a1e12872SBarry Smith #define LAgetrs_ zgetrs_ 254a1e12872SBarry Smith #define LAtrmv_ ztrmv_ 255a1e12872SBarry Smith #define LAtrsl_ ztrsl_ 2565a778de9SBarry Smith #define BLgemm_ zgemm_ 257a1e12872SBarry Smith #endif 258a1e12872SBarry Smith 259a1e12872SBarry Smith #endif 260a1e12872SBarry Smith 261a1e12872SBarry Smith #if defined(__cplusplus) 262a1e12872SBarry Smith extern "C" { 263a1e12872SBarry Smith #endif 264a1e12872SBarry Smith 265*8f4c8dbaSBarry Smith /* 266*8f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 267*8f4c8dbaSBarry Smith handle returing a double complex to C++. 268126c565eSBarry Smith */ 269126c565eSBarry Smith extern double BLdot_(int*,Scalar*,int*,Scalar*,int*); 2701eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 2711eb62cbbSBarry Smith extern void BLscal_(int*,Scalar*,Scalar*,int*); 2721eb62cbbSBarry Smith extern void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 2731eb62cbbSBarry Smith extern void BLswap_(int*,Scalar*,int*,Scalar*,int*); 2741eb62cbbSBarry Smith extern void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 2751eb62cbbSBarry Smith extern void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 276bae8960eSLois Curfman McInnes extern void LAgetf2_(int*,int*,Scalar*,int*,int*,int*); 277c0534c1cSBarry Smith extern void LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*); 2785392566eSBarry Smith 279*8f4c8dbaSBarry Smith #if defined(USES_CPTOFCD) 280112a2221SBarry Smith 281112a2221SBarry Smith #if defined(PETSC_COMPLEX) 282*8f4c8dbaSBarry Smith extern void ZPOTRF(_fcd,int*,Scalar*,int*,int*); 283*8f4c8dbaSBarry Smith extern void ZGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 2845392566eSBarry Smith Scalar*,Scalar*,int*); 285*8f4c8dbaSBarry Smith extern void ZPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 286*8f4c8dbaSBarry Smith extern void ZGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 287*8f4c8dbaSBarry Smith extern void ZGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 2884eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 2895392566eSBarry Smith #else 290*8f4c8dbaSBarry Smith extern void DPOTRF(_fcd,int*,Scalar*,int*,int*); 291*8f4c8dbaSBarry Smith extern void DGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 292112a2221SBarry Smith Scalar*,Scalar*,int*); 293*8f4c8dbaSBarry Smith extern void DPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 294*8f4c8dbaSBarry Smith extern void DGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 295*8f4c8dbaSBarry Smith extern void DGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 2964eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 297*8f4c8dbaSBarry Smith extern void DGESVD(_fcd,_fcd,int *,int*, Scalar *,int*,Scalar*,Scalar*, 298af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 299112a2221SBarry Smith #endif 300112a2221SBarry Smith 301112a2221SBarry Smith #else 302c0534c1cSBarry Smith extern void LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*, 303c0534c1cSBarry Smith int*,Scalar*,int*,int*); 304c0534c1cSBarry Smith extern void LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*, 305c0534c1cSBarry Smith int*); 3061eb62cbbSBarry Smith extern void LApotrf_(char*,int*,Scalar*,int*,int*); 3071eb62cbbSBarry Smith extern void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 308a1e12872SBarry Smith Scalar*,Scalar*,int*); 3091eb62cbbSBarry Smith extern void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 3101eb62cbbSBarry Smith extern void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 3114eeb42bcSBarry Smith extern void BLgemm_(char *,char*,int*,int*,int*,Scalar*,Scalar*,int*, 3124eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 313af6b99e9SBarry Smith extern void LAgesvd_(char *,char *,int *,int*, Scalar *,int*,Scalar*,Scalar*, 314af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 3155392566eSBarry Smith #endif 316a1e12872SBarry Smith 317a1e12872SBarry Smith #if defined(__cplusplus) 31802834360SBarry Smith } 319a1e12872SBarry Smith #endif 320a1e12872SBarry Smith 321a1e12872SBarry Smith #endif 3225a778de9SBarry Smith 3235a778de9SBarry Smith 3245a778de9SBarry Smith 325