1*a2ce50c7SBarry Smith /* $Id: plapack.h,v 1.21 1996/04/20 04:22:10 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 178f4c8dbaSBarry Smith /* 188f4c8dbaSBarry Smith This include file on the Cray T3D defines the interface between 198f4c8dbaSBarry Smith Fortran and C representations of charactor strings. 208f4c8dbaSBarry Smith */ 218f4c8dbaSBarry 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 */ 308f4c8dbaSBarry Smith 318f4c8dbaSBarry Smith #if defined(USES_FORTRAN_SINGLE) 328f4c8dbaSBarry Smith /* 338f4c8dbaSBarry Smith For these machines we must call the single precision Fortran version 348f4c8dbaSBarry Smith */ 358f4c8dbaSBarry Smith #define DGEQRF SGEQRF 368f4c8dbaSBarry Smith #define DGETRF SGETRF 378f4c8dbaSBarry Smith #define DDOT SDOT 388f4c8dbaSBarry Smith #define DNRM2 SNRM2 398f4c8dbaSBarry Smith #define DSCAL SSCAL 408f4c8dbaSBarry Smith #define DCOPY SCOPY 418f4c8dbaSBarry Smith #define DSWAP SSWAP 428f4c8dbaSBarry Smith #define DAXPY SAXPY 438f4c8dbaSBarry Smith #define DASUM SASUM 448f4c8dbaSBarry Smith #define DSORMQR SORMQR 458f4c8dbaSBarry Smith #define DTRTRS STRTRS 468f4c8dbaSBarry Smith #define DPOTRF SPOTRF 478f4c8dbaSBarry Smith #define DPOTRS SPOTRS 488f4c8dbaSBarry Smith #define DGEMV SGEMV 498f4c8dbaSBarry Smith #define DGETRS SGETRS 508f4c8dbaSBarry Smith #define DGETRS SGETRS 518f4c8dbaSBarry Smith #define DGEMM SGEMM 528f4c8dbaSBarry Smith #define DGESVD SGESVD 538f4c8dbaSBarry Smith #define DTRMV STRMV 548f4c8dbaSBarry Smith #define DTRSL STRSL 558f4c8dbaSBarry Smith #endif 568f4c8dbaSBarry Smith 578f4c8dbaSBarry 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 */ 958f4c8dbaSBarry Smith #if defined(USES_CPTOFCD) 968f4c8dbaSBarry Smith /* 978f4c8dbaSBarry Smith Note that this assumes that machines which use cptofcd() use 988f4c8dbaSBarry Smith the HAVE_FORTRAN_CAPS option. This is true on the Cray T3d. 998f4c8dbaSBarry Smith */ 1008f4c8dbaSBarry 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)) 1028f4c8dbaSBarry 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)) 1048f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1058f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1065392566eSBarry Smith (f),(g),(h)) 1078f4c8dbaSBarry 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)) 1098f4c8dbaSBarry 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)) 1118f4c8dbaSBarry 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)) 1138f4c8dbaSBarry 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)) 11621c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \ 117af6b99e9SBarry Smith _cptofcd((a),1),(c),(d),(e),\ 11821c89e3eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 1198f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 1208f4c8dbaSBarry 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 */ 1608f4c8dbaSBarry Smith #if defined(USES_FORTRAN_SINGLE) 1618f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 1628f4c8dbaSBarry Smith #define ZDOTC CDOTC 1638f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 1648f4c8dbaSBarry Smith #define ZSCAL CSCAL 1658f4c8dbaSBarry Smith #define ZCOPY CCOPY 1668f4c8dbaSBarry Smith #define ZSWAP CSWAP 1678f4c8dbaSBarry Smith #define ZAXPY CAXPY 1688f4c8dbaSBarry Smith #define DZASUM SCASUM 1698f4c8dbaSBarry Smith #define ZGETRF CGETRF 1708f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 1718f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 1728f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 1738f4c8dbaSBarry Smith #define ZGEMV CGEMV 1748f4c8dbaSBarry Smith #define ZGETRS CGETRS 1758f4c8dbaSBarry Smith #define ZGEMM SGEMM 1768f4c8dbaSBarry Smith #define ZTRMV CTRMV 1778f4c8dbaSBarry Smith #define ZTRSL CTRSL 1788f4c8dbaSBarry Smith #endif 1798f4c8dbaSBarry Smith 1808f4c8dbaSBarry 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*a2ce50c7SBarry Smith #if defined(USES_CPTOFCD) 2148f4c8dbaSBarry 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)) 2168f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 2178f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2185392566eSBarry Smith (f),(g),(h)) 2198f4c8dbaSBarry 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)) 2218f4c8dbaSBarry 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)) 2238f4c8dbaSBarry 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)) 2268f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 2278f4c8dbaSBarry 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 2658f4c8dbaSBarry Smith /* 2668f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 2678f4c8dbaSBarry 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 2798f4c8dbaSBarry Smith #if defined(USES_CPTOFCD) 280112a2221SBarry Smith 281112a2221SBarry Smith #if defined(PETSC_COMPLEX) 2828f4c8dbaSBarry Smith extern void ZPOTRF(_fcd,int*,Scalar*,int*,int*); 2838f4c8dbaSBarry Smith extern void ZGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 2845392566eSBarry Smith Scalar*,Scalar*,int*); 2858f4c8dbaSBarry Smith extern void ZPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2868f4c8dbaSBarry Smith extern void ZGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2878f4c8dbaSBarry Smith extern void ZGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 2884eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 2895392566eSBarry Smith #else 2908f4c8dbaSBarry Smith extern void DPOTRF(_fcd,int*,Scalar*,int*,int*); 2918f4c8dbaSBarry Smith extern void DGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 292112a2221SBarry Smith Scalar*,Scalar*,int*); 2938f4c8dbaSBarry Smith extern void DPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2948f4c8dbaSBarry Smith extern void DGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2958f4c8dbaSBarry Smith extern void DGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 2964eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 2978f4c8dbaSBarry 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