debian/0000755000000000000000000000000012220357217007167 5ustar debian/xsblat3.10000644000000000000000000000003012217575344010633 0ustar .so man1/libblas-test.1 debian/libblas-doc.doc-base.cinterface0000644000000000000000000000026412220070326015036 0ustar Document: libblas-doc.cinterface Title: Documentation for the C interface to the BLAS Section: Science/Mathematics Format: PDF Files: /usr/share/doc/libblas-doc/cinterface.pdf.gz debian/xzblat1.10000644000000000000000000000003012217575344010640 0ustar .so man1/libblas-test.1 debian/xccblat2.10000644000000000000000000000003012217575344010755 0ustar .so man1/libblas-test.1 debian/xsblat2.10000644000000000000000000000003012217575344010632 0ustar .so man1/libblas-test.1 debian/libblas3gf.lintian-overrides0000644000000000000000000000007012217575344014565 0ustar # Transitional package libblas3gf: empty-binary-package debian/libblas-doc.docs0000644000000000000000000000007512217603721012216 0ustar doc/faq.html doc/blue.png debian/patched-docs/cinterface.pdf debian/libblas-test.10000644000000000000000000000566612217575344011664 0ustar .\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH BLAS-TEST 1 "January 29, 2002" netlib "Linux Programmer's Manual" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME x{s,d,c,z}c?blat{1,2,3} - testing programs for blas .SH SYNOPSIS .B x{s,d,c,z}c?blat1 .br .B x{s,d,c,z}c?blat{2,3} .RI < " parameter file" .SH DESCRIPTION This manual page documents briefly the blas testing programs. This manual page was written for the Debian GNU/Linux distribution because the original programs do not have manual pages. .PP .\" TeX users may be more comfortable with the \fB\fP and .\" \fI\fP escape sequences to invode bold face and italics, .\" respectively. .B blas is a library of Basic Linear Algebra routines, accessed through either a Fortran and/or a C interface. These routines are categorized into three levels: level1 referring to vecotr-vector operations, level2 to matrix-vector operations, and level3 to matrix-matrix operations. In addition, all routines are written in four "precisions", single precision real (s), double precision real (d), cingle precision complex (c), and double precision complex (z). .br The testing binaries examine routines in the level indicated by the last character in the program name and in the precision indicated by the second character in the program name. The stem "blat" in the program name refers to a Fortran interface tester, whereas a "cblat" stem refers to a C interface tester. .br The test programs for levels 2 and 3 read a set of parameters specifying the problem ranges to examine on standard input. Sample input files are found in /usr/share/doc/blas-test/examples. Files of the form {s,d,c,z}in{2,3} are input files for the C interface testing programs, while files or the form {s,d,c,z}blat{2,3}d are input files to the Fortran testing programs. .br On Debian systems, these programs are dynamically linked against the blas library. This enables the user to test and compare alternate versions of the library, such as those provided by atlas, through the use of the LD_LIBRARY_PATH and LD_PRELOAD environment variables. One can confirm the versions of the libraries being tested in a given environment with the aid of the ldd program. .SH OPTIONS These programs take no command line options. .\" .SH SEE ALSO .SH AUTHOR This manual page was written by Camm Maguire , for the Debian GNU/Linux system (but may be used by others). debian/patches/0000755000000000000000000000000012217601312010610 5ustar debian/patches/single-big.patch0000644000000000000000000057552112217577744013715 0ustar --- a/cblas/src/cblas_cgbmv.c +++ b/cblas/src/cblas_cgbmv.c @@ -43,7 +43,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (TransA == CblasNoTrans) TA = 'N'; @@ -52,7 +52,7 @@ else { cblas_xerbla(2, "cblas_cgbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -132,7 +132,7 @@ else { cblas_xerbla(2, "cblas_cgbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -160,6 +160,6 @@ } } else cblas_xerbla(1, "cblas_cgbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; } --- a/cblas/src/cblas_cgemm.c +++ b/cblas/src/cblas_cgemm.c @@ -38,7 +38,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -48,7 +48,7 @@ else { cblas_xerbla(2, "cblas_cgemm", "Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(3, "cblas_cgemm", "Illegal TransB setting, %d\n", TransB); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -80,7 +80,7 @@ else { cblas_xerbla(2, "cblas_cgemm", "Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -90,7 +90,7 @@ else { cblas_xerbla(2, "cblas_cgemm", "Illegal TransB setting, %d\n", TransB); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -103,7 +103,7 @@ &F77_ldb, A, &F77_lda, beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_cgemm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_cgemv.c +++ b/cblas/src/cblas_cgemv.c @@ -41,7 +41,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { @@ -51,7 +51,7 @@ else { cblas_xerbla(2, "cblas_cgemv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -127,7 +127,7 @@ else { cblas_xerbla(2, "cblas_cgemv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -156,7 +156,7 @@ } } else cblas_xerbla(1, "cblas_cgemv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_cgerc.c +++ b/cblas/src/cblas_cgerc.c @@ -30,7 +30,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { F77_cgerc( &F77_M, &F77_N, alpha, X, &F77_incX, Y, &F77_incY, A, @@ -78,7 +78,7 @@ free(y); } else cblas_xerbla(1, "cblas_cgerc", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_cgeru.c +++ b/cblas/src/cblas_cgeru.c @@ -25,7 +25,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { @@ -39,7 +39,7 @@ &F77_lda); } else cblas_xerbla(1, "cblas_cgeru","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_chbmv.c +++ b/cblas/src/cblas_chbmv.c @@ -39,7 +39,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_chbmv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -121,7 +121,7 @@ else { cblas_xerbla(2, "cblas_chbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -134,7 +134,7 @@ else { cblas_xerbla(1, "cblas_chbmv","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -153,7 +153,7 @@ while (y != st); } } - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_chemm.c +++ b/cblas/src/cblas_chemm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_chemm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_chemm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -76,7 +76,7 @@ else { cblas_xerbla(2, "cblas_chemm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -86,7 +86,7 @@ else { cblas_xerbla(3, "cblas_chemm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -100,7 +100,7 @@ &F77_lda, B, &F77_ldb, beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_chemm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_chemv.c +++ b/cblas/src/cblas_chemv.c @@ -39,7 +39,7 @@ RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_chemv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -122,7 +122,7 @@ else { cblas_xerbla(2, "cblas_chemv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -135,7 +135,7 @@ else { cblas_xerbla(1, "cblas_chemv","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -154,7 +154,7 @@ while (y != st); } } - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_cher2.c +++ b/cblas/src/cblas_cher2.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_cher2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -63,7 +63,7 @@ else { cblas_xerbla(2, "cblas_cher2","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -137,7 +137,7 @@ } else { cblas_xerbla(1, "cblas_cher2","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -146,7 +146,7 @@ if(Y!=y) free(y); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_cher2k.c +++ b/cblas/src/cblas_cher2k.c @@ -39,7 +39,7 @@ float ALPHA[2]; const float *alp=(float *)alpha; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; RowMajorStrg = 0; if( Order == CblasColMajor ) @@ -50,7 +50,7 @@ else { cblas_xerbla(2, "cblas_cher2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -61,7 +61,7 @@ else { cblas_xerbla(3, "cblas_cher2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ else { cblas_xerbla(2, "cblas_cher2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -91,7 +91,7 @@ else { cblas_xerbla(3, "cblas_cher2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -105,7 +105,7 @@ F77_cher2k(F77_UL,F77_TR, &F77_N, &F77_K, ALPHA, A, &F77_lda, B, &F77_ldb, &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_cher2k", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_cher.c +++ b/cblas/src/cblas_cher.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_cher","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ else { cblas_xerbla(2, "cblas_cher","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -103,14 +103,14 @@ } else { cblas_xerbla(1, "cblas_cher","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } if(X!=x) free(x); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_cherk.c +++ b/cblas/src/cblas_cherk.c @@ -35,7 +35,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_cherk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -55,7 +55,7 @@ else { cblas_xerbla(3, "cblas_cherk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -75,7 +75,7 @@ else { cblas_xerbla(3, "cblas_cherk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -85,7 +85,7 @@ else { cblas_xerbla(3, "cblas_cherk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -99,7 +99,7 @@ &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_cherk", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_chpmv.c +++ b/cblas/src/cblas_chpmv.c @@ -37,7 +37,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -45,7 +45,7 @@ else { cblas_xerbla(2, "cblas_chpmv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -120,7 +120,7 @@ else { cblas_xerbla(2, "cblas_chpmv","Illegal Uplo setting, %d\n", Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -134,7 +134,7 @@ else { cblas_xerbla(1, "cblas_chpmv","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -154,7 +154,7 @@ } } - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_chpr2.c +++ b/cblas/src/cblas_chpr2.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_chpr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -62,7 +62,7 @@ else { cblas_xerbla(2, "cblas_chpr2","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -135,7 +135,7 @@ } else { cblas_xerbla(1, "cblas_chpr2","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -143,7 +143,7 @@ free(x); if(Y!=y) free(y); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_chpr.c +++ b/cblas/src/cblas_chpr.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_chpr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(2, "cblas_chpr","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -103,13 +103,13 @@ } else { cblas_xerbla(1, "cblas_chpr","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } if(X!=x) free(x); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_csymm.c +++ b/cblas/src/cblas_csymm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_csymm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_csymm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -76,7 +76,7 @@ else { cblas_xerbla(2, "cblas_csymm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -86,7 +86,7 @@ else { cblas_xerbla(3, "cblas_csymm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -100,7 +100,7 @@ B, &F77_ldb, beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_csymm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_csyr2k.c +++ b/cblas/src/cblas_csyr2k.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_csyr2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -58,7 +58,7 @@ else { cblas_xerbla(3, "cblas_csyr2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -79,7 +79,7 @@ else { cblas_xerbla(3, "cblas_csyr2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -89,7 +89,7 @@ else { cblas_xerbla(3, "cblas_csyr2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ F77_csyr2k(F77_UL, F77_TR, &F77_N, &F77_K, alpha, A, &F77_lda, B, &F77_ldb, beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_csyr2k", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_csyrk.c +++ b/cblas/src/cblas_csyrk.c @@ -35,7 +35,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -45,7 +45,7 @@ else { cblas_xerbla(2, "cblas_csyrk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_csyrk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -77,7 +77,7 @@ else { cblas_xerbla(3, "cblas_csyrk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -87,7 +87,7 @@ else { cblas_xerbla(3, "cblas_csyrk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -101,7 +101,7 @@ beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_csyrk", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ctbmv.c +++ b/cblas/src/cblas_ctbmv.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_ctbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -54,7 +54,7 @@ else { cblas_xerbla(3, "cblas_ctbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -63,7 +63,7 @@ else { cblas_xerbla(4, "cblas_ctbmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -83,7 +83,7 @@ else { cblas_xerbla(2, "cblas_ctbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -115,7 +115,7 @@ else { cblas_xerbla(3, "cblas_ctbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -125,7 +125,7 @@ else { cblas_xerbla(4, "cblas_ctbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -152,7 +152,7 @@ } } else cblas_xerbla(1, "cblas_ctbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ctbsv.c +++ b/cblas/src/cblas_ctbsv.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_ctbsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -54,7 +54,7 @@ else { cblas_xerbla(3, "cblas_ctbsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -63,7 +63,7 @@ else { cblas_xerbla(4, "cblas_ctbsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -83,7 +83,7 @@ else { cblas_xerbla(2, "cblas_ctbsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -119,7 +119,7 @@ else { cblas_xerbla(3, "cblas_ctbsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -129,7 +129,7 @@ else { cblas_xerbla(4, "cblas_ctbsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -156,7 +156,7 @@ } } else cblas_xerbla(1, "cblas_ctbsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ctpmv.c +++ b/cblas/src/cblas_ctpmv.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_ctpmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -51,7 +51,7 @@ else { cblas_xerbla(3, "cblas_ctpmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ else { cblas_xerbla(4, "cblas_ctpmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -79,7 +79,7 @@ else { cblas_xerbla(2, "cblas_ctpmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -111,7 +111,7 @@ else { cblas_xerbla(3, "cblas_ctpmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -121,7 +121,7 @@ else { cblas_xerbla(4, "cblas_ctpmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -146,7 +146,7 @@ } } else cblas_xerbla(1, "cblas_ctpmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ctpsv.c +++ b/cblas/src/cblas_ctpsv.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_ctpsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -51,7 +51,7 @@ else { cblas_xerbla(3, "cblas_ctpsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ else { cblas_xerbla(4, "cblas_ctpsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -79,7 +79,7 @@ else { cblas_xerbla(2, "cblas_ctpsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -115,7 +115,7 @@ else { cblas_xerbla(3, "cblas_ctpsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -125,7 +125,7 @@ else { cblas_xerbla(4, "cblas_ctpsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -151,7 +151,7 @@ } } else cblas_xerbla(1, "cblas_ctpsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ctrmm.c +++ b/cblas/src/cblas_ctrmm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_ctrmm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -55,7 +55,7 @@ else { cblas_xerbla(3, "cblas_ctrmm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -66,7 +66,7 @@ else { cblas_xerbla(4, "cblas_ctrmm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -92,7 +92,7 @@ else { cblas_xerbla(2, "cblas_ctrmm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ else { cblas_xerbla(3, "cblas_ctrmm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -113,7 +113,7 @@ else { cblas_xerbla(4, "cblas_ctrmm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -123,7 +123,7 @@ else { cblas_xerbla(5, "cblas_ctrmm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -138,7 +138,7 @@ F77_ctrmm(F77_SD, F77_UL, F77_TA, F77_DI, &F77_N, &F77_M, alpha, A, &F77_lda, B, &F77_ldb); } else cblas_xerbla(1, "cblas_ctrmm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ctrmv.c +++ b/cblas/src/cblas_ctrmv.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_ctrmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -54,7 +54,7 @@ else { cblas_xerbla(3, "cblas_ctrmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -63,7 +63,7 @@ else { cblas_xerbla(4, "cblas_ctrmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -83,7 +83,7 @@ else { cblas_xerbla(2, "cblas_ctrmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -114,7 +114,7 @@ else { cblas_xerbla(3, "cblas_ctrmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -124,7 +124,7 @@ else { cblas_xerbla(4, "cblas_ctrmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -149,7 +149,7 @@ } } else cblas_xerbla(1, "cblas_ctrmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ctrsm.c +++ b/cblas/src/cblas_ctrsm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_ctrsm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -57,7 +57,7 @@ else { cblas_xerbla(3, "cblas_ctrsm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -68,7 +68,7 @@ else { cblas_xerbla(4, "cblas_ctrsm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -78,7 +78,7 @@ else { cblas_xerbla(5, "cblas_ctrsm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -101,7 +101,7 @@ else { cblas_xerbla(2, "cblas_ctrsm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -111,7 +111,7 @@ else { cblas_xerbla(3, "cblas_ctrsm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -122,7 +122,7 @@ else { cblas_xerbla(4, "cblas_ctrsm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -132,7 +132,7 @@ else { cblas_xerbla(5, "cblas_ctrsm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -149,7 +149,7 @@ &F77_lda, B, &F77_ldb); } else cblas_xerbla(1, "cblas_ctrsm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ctrsv.c +++ b/cblas/src/cblas_ctrsv.c @@ -35,7 +35,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -43,7 +43,7 @@ else { cblas_xerbla(2, "cblas_ctrsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -53,7 +53,7 @@ else { cblas_xerbla(3, "cblas_ctrsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -62,7 +62,7 @@ else { cblas_xerbla(4, "cblas_ctrsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -82,7 +82,7 @@ else { cblas_xerbla(2, "cblas_ctrsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -115,7 +115,7 @@ else { cblas_xerbla(3, "cblas_ctrsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -125,7 +125,7 @@ else { cblas_xerbla(4, "cblas_ctrsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -150,7 +150,7 @@ } } else cblas_xerbla(1, "cblas_ctrsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dgbmv.c +++ b/cblas/src/cblas_dgbmv.c @@ -37,7 +37,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (TransA == CblasNoTrans) TA = 'N'; @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_dgbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -65,7 +65,7 @@ else { cblas_xerbla(2, "cblas_dgbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -76,6 +76,6 @@ A ,&F77_lda, X,&F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_dgbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; } --- a/cblas/src/cblas_dgemm.c +++ b/cblas/src/cblas_dgemm.c @@ -38,7 +38,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -48,7 +48,7 @@ else { cblas_xerbla(2, "cblas_dgemm","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(3, "cblas_dgemm","Illegal TransB setting, %d\n", TransB); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -80,7 +80,7 @@ else { cblas_xerbla(2, "cblas_dgemm","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -90,7 +90,7 @@ else { cblas_xerbla(2, "cblas_dgemm","Illegal TransB setting, %d\n", TransB); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -103,7 +103,7 @@ &F77_ldb, A, &F77_lda, &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_dgemm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dgemv.c +++ b/cblas/src/cblas_dgemv.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (TransA == CblasNoTrans) TA = 'N'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_dgemv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -61,7 +61,7 @@ else { cblas_xerbla(2, "cblas_dgemv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -72,7 +72,7 @@ &F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_dgemv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dger.c +++ b/cblas/src/cblas_dger.c @@ -27,7 +27,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { F77_dger( &F77_M, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, @@ -41,7 +41,7 @@ } else cblas_xerbla(1, "cblas_dger", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dsbmv.c +++ b/cblas/src/cblas_dsbmv.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_dsbmv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ else { cblas_xerbla(2, "cblas_dsbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -71,7 +71,7 @@ A ,&F77_lda, X,&F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_dsbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dspmv.c +++ b/cblas/src/cblas_dspmv.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_dspmv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(2, "cblas_dspmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -70,7 +70,7 @@ AP, X,&F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_dspmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dspr2.c +++ b/cblas/src/cblas_dspr2.c @@ -29,7 +29,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -37,7 +37,7 @@ else { cblas_xerbla(2, "cblas_dspr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -55,7 +55,7 @@ else { cblas_xerbla(2, "cblas_dspr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -64,7 +64,7 @@ #endif F77_dspr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A); } else cblas_xerbla(1, "cblas_dspr2", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dspr.c +++ b/cblas/src/cblas_dspr.c @@ -29,7 +29,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -37,7 +37,7 @@ else { cblas_xerbla(2, "cblas_dspr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -55,7 +55,7 @@ else { cblas_xerbla(2, "cblas_dspr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -64,7 +64,7 @@ #endif F77_dspr(F77_UL, &F77_N, &alpha, X, &F77_incX, Ap); } else cblas_xerbla(1, "cblas_dspr", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dsymm.c +++ b/cblas/src/cblas_dsymm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_dsymm","Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_dsymm","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -76,7 +76,7 @@ else { cblas_xerbla(2, "cblas_dsymm","Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -86,7 +86,7 @@ else { cblas_xerbla(3, "cblas_dsymm","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -100,7 +100,7 @@ &F77_ldb, &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_dsymm","Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dsymv.c +++ b/cblas/src/cblas_dsymv.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_dsymv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(2, "cblas_dsymv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -70,7 +70,7 @@ A ,&F77_lda, X,&F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_dsymv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dsyr2.c +++ b/cblas/src/cblas_dsyr2.c @@ -33,7 +33,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_dsyr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ else { cblas_xerbla(2, "cblas_dsyr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -70,7 +70,7 @@ F77_dsyr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, &F77_lda); } else cblas_xerbla(1, "cblas_dsyr2", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dsyr2k.c +++ b/cblas/src/cblas_dsyr2k.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_dsyr2k","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -58,7 +58,7 @@ else { cblas_xerbla(3, "cblas_dsyr2k","Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -79,7 +79,7 @@ else { cblas_xerbla(3, "cblas_dsyr2k","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -89,7 +89,7 @@ else { cblas_xerbla(3, "cblas_dsyr2k","Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -103,7 +103,7 @@ &F77_ldb, &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_dsyr2k","Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dsyr.c +++ b/cblas/src/cblas_dsyr.c @@ -30,7 +30,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -38,7 +38,7 @@ else { cblas_xerbla(2, "cblas_dsyr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(2, "cblas_dsyr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -65,7 +65,7 @@ #endif F77_dsyr(F77_UL, &F77_N, &alpha, X, &F77_incX, A, &F77_lda); } else cblas_xerbla(1, "cblas_dsyr", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dsyrk.c +++ b/cblas/src/cblas_dsyrk.c @@ -35,7 +35,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -45,7 +45,7 @@ else { cblas_xerbla(2, "cblas_dsyrk","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_dsyrk","Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -77,7 +77,7 @@ else { cblas_xerbla(3, "cblas_dsyrk","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -87,7 +87,7 @@ else { cblas_xerbla(3, "cblas_dsyrk","Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -101,7 +101,7 @@ &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_dsyrk","Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dtbmv.c +++ b/cblas/src/cblas_dtbmv.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_dtbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -52,7 +52,7 @@ else { cblas_xerbla(3, "cblas_dtbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -61,7 +61,7 @@ else { cblas_xerbla(4, "cblas_dtbmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ else { cblas_xerbla(2, "cblas_dtbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -92,7 +92,7 @@ else { cblas_xerbla(3, "cblas_dtbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ else { cblas_xerbla(4, "cblas_dtbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -117,6 +117,6 @@ } else cblas_xerbla(1, "cblas_dtbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; } --- a/cblas/src/cblas_dtbsv.c +++ b/cblas/src/cblas_dtbsv.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_dtbsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -52,7 +52,7 @@ else { cblas_xerbla(3, "cblas_dtbsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -61,7 +61,7 @@ else { cblas_xerbla(4, "cblas_dtbsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ else { cblas_xerbla(2, "cblas_dtbsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -92,7 +92,7 @@ else { cblas_xerbla(3, "cblas_dtbsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ else { cblas_xerbla(4, "cblas_dtbsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -116,7 +116,7 @@ &F77_incX); } else cblas_xerbla(1, "cblas_dtbsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dtpmv.c +++ b/cblas/src/cblas_dtpmv.c @@ -31,7 +31,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -39,7 +39,7 @@ else { cblas_xerbla(2, "cblas_dtpmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -49,7 +49,7 @@ else { cblas_xerbla(3, "cblas_dtpmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -58,7 +58,7 @@ else { cblas_xerbla(4, "cblas_dtpmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -77,7 +77,7 @@ else { cblas_xerbla(2, "cblas_dtpmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -88,7 +88,7 @@ else { cblas_xerbla(3, "cblas_dtpmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -98,7 +98,7 @@ else { cblas_xerbla(4, "cblas_dtpmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -111,7 +111,7 @@ F77_dtpmv( F77_UL, F77_TA, F77_DI, &F77_N, Ap, X,&F77_incX); } else cblas_xerbla(1, "cblas_dtpmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dtpsv.c +++ b/cblas/src/cblas_dtpsv.c @@ -31,7 +31,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -39,7 +39,7 @@ else { cblas_xerbla(2, "cblas_dtpsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -49,7 +49,7 @@ else { cblas_xerbla(3, "cblas_dtpsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -58,7 +58,7 @@ else { cblas_xerbla(4, "cblas_dtpsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -77,7 +77,7 @@ else { cblas_xerbla(2, "cblas_dtpsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -88,7 +88,7 @@ else { cblas_xerbla(3, "cblas_dtpsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -98,7 +98,7 @@ else { cblas_xerbla(4, "cblas_dtpsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -112,7 +112,7 @@ } else cblas_xerbla(1, "cblas_dtpsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dtrmm.c +++ b/cblas/src/cblas_dtrmm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_dtrmm","Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -55,7 +55,7 @@ else { cblas_xerbla(3, "cblas_dtrmm","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -66,7 +66,7 @@ else { cblas_xerbla(4, "cblas_dtrmm","Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -76,7 +76,7 @@ else { cblas_xerbla(5, "cblas_dtrmm","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -97,7 +97,7 @@ else { cblas_xerbla(2, "cblas_dtrmm","Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -107,7 +107,7 @@ else { cblas_xerbla(3, "cblas_dtrmm","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -118,7 +118,7 @@ else { cblas_xerbla(4, "cblas_dtrmm","Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -128,7 +128,7 @@ else { cblas_xerbla(5, "cblas_dtrmm","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -142,7 +142,7 @@ F77_dtrmm(F77_SD, F77_UL, F77_TA, F77_DI, &F77_N, &F77_M, &alpha, A, &F77_lda, B, &F77_ldb); } else cblas_xerbla(1, "cblas_dtrmm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dtrmv.c +++ b/cblas/src/cblas_dtrmv.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_dtrmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -54,7 +54,7 @@ else { cblas_xerbla(3, "cblas_dtrmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -63,7 +63,7 @@ else { cblas_xerbla(4, "cblas_dtrmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -83,7 +83,7 @@ else { cblas_xerbla(2, "cblas_dtrmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -94,7 +94,7 @@ else { cblas_xerbla(3, "cblas_dtrmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -104,7 +104,7 @@ else { cblas_xerbla(4, "cblas_dtrmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -116,7 +116,7 @@ F77_dtrmv( F77_UL, F77_TA, F77_DI, &F77_N, A, &F77_lda, X, &F77_incX); } else cblas_xerbla(1, "cblas_dtrmv", "Illegal order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dtrsm.c +++ b/cblas/src/cblas_dtrsm.c @@ -38,7 +38,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_dtrsm","Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_dtrsm","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -67,7 +67,7 @@ else { cblas_xerbla(4, "cblas_dtrsm","Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -77,7 +77,7 @@ else { cblas_xerbla(5, "cblas_dtrsm","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -100,7 +100,7 @@ else { cblas_xerbla(2, "cblas_dtrsm","Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -110,7 +110,7 @@ else { cblas_xerbla(3, "cblas_dtrsm","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -121,7 +121,7 @@ else { cblas_xerbla(4, "cblas_dtrsm","Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -131,7 +131,7 @@ else { cblas_xerbla(5, "cblas_dtrsm","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -147,7 +147,7 @@ &F77_lda, B, &F77_ldb); } else cblas_xerbla(1, "cblas_dtrsm","Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_dtrsv.c +++ b/cblas/src/cblas_dtrsv.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_dtrsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -52,7 +52,7 @@ else { cblas_xerbla(3, "cblas_dtrsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -61,7 +61,7 @@ else { cblas_xerbla(4, "cblas_dtrsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ else { cblas_xerbla(2, "cblas_dtrsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -92,7 +92,7 @@ else { cblas_xerbla(3, "cblas_dtrsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ else { cblas_xerbla(4, "cblas_dtrsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -115,7 +115,7 @@ &F77_incX); } else cblas_xerbla(1, "cblas_dtrsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_f77.h +++ b/cblas/src/cblas_f77.h @@ -6,6 +6,9 @@ * Merged cblas_f77.h and cblas_fortran_header.h */ +#include +#include + #ifndef CBLAS_F77_H #define CBLAS_f77_H @@ -39,6 +42,7 @@ /* * Level 1 BLAS */ +#define F77_xerbli xerbli_ #define F77_xerbla xerbla_ #define F77_srotg srotg_ #define F77_srotmg srotmg_ @@ -192,6 +196,7 @@ /* * Level 1 BLAS */ +#define F77_xerbli XERBLI #define F77_xerbla XERBLA #define F77_srotg SROTG #define F77_srotmg SROTMG @@ -345,6 +350,7 @@ /* * Level 1 BLAS */ +#define F77_xerbli xerbli #define F77_xerbla xerbla #define F77_srotg srotg #define F77_srotmg srotmg @@ -690,4 +696,69 @@ void F77_ztrmm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, double *, FINT); void F77_ztrsm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, double *, FINT); + +static int RowMajorStrgi; + +static void +cblas_fix_info(int *info,const char *rout) { + + if (RowMajorStrgi) + { + if (strstr(rout,"gemm") != 0) + { + if (*info == 5 ) *info = 4; + else if (*info == 4 ) *info = 5; + else if (*info == 11) *info = 9; + else if (*info == 9 ) *info = 11; + } + else if (strstr(rout,"symm") != 0 || strstr(rout,"hemm") != 0) + { + if (*info == 5 ) *info = 4; + else if (*info == 4 ) *info = 5; + } + else if (strstr(rout,"trmm") != 0 || strstr(rout,"trsm") != 0) + { + if (*info == 7 ) *info = 6; + else if (*info == 6 ) *info = 7; + } + else if (strstr(rout,"gemv") != 0) + { + if (*info == 4) *info = 3; + else if (*info == 3) *info = 4; + } + else if (strstr(rout,"gbmv") != 0) + { + if (*info == 4) *info = 3; + else if (*info == 3) *info = 4; + else if (*info == 6) *info = 5; + else if (*info == 5) *info = 6; + } + else if (strstr(rout,"ger") != 0) + { + if (*info == 3) *info = 2; + else if (*info == 2) *info = 3; + else if (*info == 8) *info = 6; + else if (*info == 6) *info = 8; + } + else if ( (strstr(rout,"her2") != 0 || strstr(rout,"hpr2") != 0) + && strstr(rout,"her2k") == 0 ) + { + if (*info == 8) *info = 6; + else if (*info == 6) *info = 8; + } + } +} + +extern void (*mcblas_fix_info)(int *,const char *); + +#undef cblas_xerbla +#define cblas_xerbla(a_,b_,c_...) {\ + int aa_=(a_);\ + if (mcblas_fix_info) (*mcblas_fix_info)(&(aa_),(b_));\ + cblas_xerbla((aa_),(b_),##c_);\ +} + +#undef RowMajorStrg +#define RowMajorStrg RowMajorStrgi + #endif /* CBLAS_F77_H */ --- a/cblas/src/cblas_globals.c +++ b/cblas/src/cblas_globals.c @@ -1,2 +1,2 @@ -int CBLAS_CallFromC=0; -int RowMajorStrg=0; +static int CBLAS_CallFromC; +static int RowMajorStrg; --- a/cblas/src/cblas_sgbmv.c +++ b/cblas/src/cblas_sgbmv.c @@ -38,7 +38,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (TransA == CblasNoTrans) TA = 'N'; @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_sgbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -66,7 +66,7 @@ else { cblas_xerbla(2, "cblas_sgbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -77,7 +77,7 @@ A ,&F77_lda, X, &F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_sgbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_sgemm.c +++ b/cblas/src/cblas_sgemm.c @@ -38,7 +38,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { if(TransA == CblasTrans) TA='T'; @@ -48,7 +48,7 @@ { cblas_xerbla(2, "cblas_sgemm", "Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ { cblas_xerbla(3, "cblas_sgemm", "Illegal TransB setting, %d\n", TransB); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ { cblas_xerbla(2, "cblas_sgemm", "Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -92,7 +92,7 @@ { cblas_xerbla(2, "cblas_sgemm", "Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -105,6 +105,6 @@ } else cblas_xerbla(1, "cblas_sgemm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; } --- a/cblas/src/cblas_sgemv.c +++ b/cblas/src/cblas_sgemv.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (TransA == CblasNoTrans) TA = 'N'; @@ -43,7 +43,7 @@ else { cblas_xerbla(2, "cblas_sgemv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; } #ifdef F77_CHAR @@ -61,7 +61,7 @@ else { cblas_xerbla(2, "cblas_sgemv", "Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -72,7 +72,7 @@ &F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_sgemv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_sger.c +++ b/cblas/src/cblas_sger.c @@ -27,7 +27,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { F77_sger( &F77_M, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, @@ -40,7 +40,7 @@ &F77_lda); } else cblas_xerbla(1, "cblas_sger", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ssbmv.c +++ b/cblas/src/cblas_ssbmv.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_ssbmv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(2, "cblas_ssbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -70,7 +70,7 @@ &F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_ssbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_sspmv.c +++ b/cblas/src/cblas_sspmv.c @@ -31,7 +31,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -39,7 +39,7 @@ else { cblas_xerbla(2, "cblas_sspmv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -57,7 +57,7 @@ else { cblas_xerbla(2, "cblas_sspmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -68,6 +68,6 @@ AP, X,&F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_sspmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; } --- a/cblas/src/cblas_sspr2.c +++ b/cblas/src/cblas_sspr2.c @@ -31,7 +31,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -39,7 +39,7 @@ else { cblas_xerbla(2, "cblas_sspr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -57,7 +57,7 @@ else { cblas_xerbla(2, "cblas_sspr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -66,6 +66,6 @@ #endif F77_sspr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A); } else cblas_xerbla(1, "cblas_sspr2", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; } --- a/cblas/src/cblas_sspr.c +++ b/cblas/src/cblas_sspr.c @@ -31,7 +31,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -39,7 +39,7 @@ else { cblas_xerbla(2, "cblas_sspr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -57,7 +57,7 @@ else { cblas_xerbla(2, "cblas_sspr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -66,7 +66,7 @@ #endif F77_sspr(F77_UL, &F77_N, &alpha, X, &F77_incX, Ap); } else cblas_xerbla(1, "cblas_sspr", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ssymm.c +++ b/cblas/src/cblas_ssymm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -47,7 +47,7 @@ { cblas_xerbla(2, "cblas_ssymm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -58,7 +58,7 @@ { cblas_xerbla(3, "cblas_ssymm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -78,7 +78,7 @@ { cblas_xerbla(2, "cblas_ssymm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -89,7 +89,7 @@ { cblas_xerbla(3, "cblas_ssymm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ F77_ssymm(F77_SD, F77_UL, &F77_N, &F77_M, &alpha, A, &F77_lda, B, &F77_ldb, &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_ssymm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ssymv.c +++ b/cblas/src/cblas_ssymv.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_ssymv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(2, "cblas_ssymv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -70,7 +70,7 @@ A ,&F77_lda, X,&F77_incX, &beta, Y, &F77_incY); } else cblas_xerbla(1, "cblas_ssymv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ssyr2.c +++ b/cblas/src/cblas_ssyr2.c @@ -33,7 +33,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_ssyr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ else { cblas_xerbla(2, "cblas_ssyr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -70,7 +70,7 @@ F77_ssyr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A, &F77_lda); } else cblas_xerbla(1, "cblas_ssyr2", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ssyr2k.c +++ b/cblas/src/cblas_ssyr2k.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -48,7 +48,7 @@ { cblas_xerbla(2, "cblas_ssyr2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ { cblas_xerbla(3, "cblas_ssyr2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ { cblas_xerbla(3, "cblas_ssyr2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -92,7 +92,7 @@ { cblas_xerbla(3, "cblas_ssyr2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -105,7 +105,7 @@ F77_ssyr2k(F77_UL, F77_TR, &F77_N, &F77_K, &alpha, A, &F77_lda, B, &F77_ldb, &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_ssyr2k", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ssyr.c +++ b/cblas/src/cblas_ssyr.c @@ -29,7 +29,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -37,7 +37,7 @@ else { cblas_xerbla(2, "cblas_ssyr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -55,7 +55,7 @@ else { cblas_xerbla(2, "cblas_ssyr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -64,7 +64,7 @@ #endif F77_ssyr(F77_UL, &F77_N, &alpha, X, &F77_incX, A, &F77_lda); } else cblas_xerbla(1, "cblas_ssyr", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ssyrk.c +++ b/cblas/src/cblas_ssyrk.c @@ -35,7 +35,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ { cblas_xerbla(2, "cblas_ssyrk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -58,7 +58,7 @@ { cblas_xerbla(3, "cblas_ssyrk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -79,7 +79,7 @@ { cblas_xerbla(3, "cblas_ssyrk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -90,7 +90,7 @@ { cblas_xerbla(3, "cblas_ssyrk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -103,7 +103,7 @@ F77_ssyrk(F77_UL, F77_TR, &F77_N, &F77_K, &alpha, A, &F77_lda, &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_ssyrk", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_stbmv.c +++ b/cblas/src/cblas_stbmv.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_stbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -52,7 +52,7 @@ else { cblas_xerbla(3, "cblas_stbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -61,7 +61,7 @@ else { cblas_xerbla(4, "cblas_stbmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ else { cblas_xerbla(2, "cblas_stbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -92,7 +92,7 @@ else { cblas_xerbla(3, "cblas_stbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ else { cblas_xerbla(4, "cblas_stbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -116,7 +116,7 @@ &F77_incX); } else cblas_xerbla(1, "cblas_stbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_stbsv.c +++ b/cblas/src/cblas_stbsv.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_stbsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -52,7 +52,7 @@ else { cblas_xerbla(3, "cblas_stbsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -61,7 +61,7 @@ else { cblas_xerbla(4, "cblas_stbsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ else { cblas_xerbla(2, "cblas_stbsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -92,7 +92,7 @@ else { cblas_xerbla(3, "cblas_stbsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ else { cblas_xerbla(4, "cblas_stbsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -116,7 +116,7 @@ &F77_incX); } else cblas_xerbla(1, "cblas_stbsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_stpmv.c +++ b/cblas/src/cblas_stpmv.c @@ -32,7 +32,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -40,7 +40,7 @@ else { cblas_xerbla(2, "cblas_stpmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -50,7 +50,7 @@ else { cblas_xerbla(3, "cblas_stpmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(4, "cblas_stpmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -78,7 +78,7 @@ else { cblas_xerbla(2, "cblas_stpmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -89,7 +89,7 @@ else { cblas_xerbla(3, "cblas_stpmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -99,7 +99,7 @@ else { cblas_xerbla(4, "cblas_stpmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -112,7 +112,7 @@ F77_stpmv( F77_UL, F77_TA, F77_DI, &F77_N, Ap, X,&F77_incX); } else cblas_xerbla(1, "cblas_stpmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_stpsv.c +++ b/cblas/src/cblas_stpsv.c @@ -31,7 +31,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -39,7 +39,7 @@ else { cblas_xerbla(2, "cblas_stpsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -49,7 +49,7 @@ else { cblas_xerbla(3, "cblas_stpsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -58,7 +58,7 @@ else { cblas_xerbla(4, "cblas_stpsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -77,7 +77,7 @@ else { cblas_xerbla(2, "cblas_stpsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -88,7 +88,7 @@ else { cblas_xerbla(3, "cblas_stpsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -98,7 +98,7 @@ else { cblas_xerbla(4, "cblas_stpsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -112,7 +112,7 @@ } else cblas_xerbla(1, "cblas_stpsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_strmm.c +++ b/cblas/src/cblas_strmm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_strmm","Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -55,7 +55,7 @@ else { cblas_xerbla(3, "cblas_strmm","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -66,7 +66,7 @@ else { cblas_xerbla(4, "cblas_strmm","Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -76,7 +76,7 @@ else { cblas_xerbla(5, "cblas_strmm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -97,7 +97,7 @@ else { cblas_xerbla(2, "cblas_strmm","Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -107,7 +107,7 @@ else { cblas_xerbla(3, "cblas_strmm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -118,7 +118,7 @@ else { cblas_xerbla(4, "cblas_strmm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -128,7 +128,7 @@ else { cblas_xerbla(5, "cblas_strmm","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -142,7 +142,7 @@ &F77_lda, B, &F77_ldb); } else cblas_xerbla(1, "cblas_strmm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_strmv.c +++ b/cblas/src/cblas_strmv.c @@ -35,7 +35,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -43,7 +43,7 @@ else { cblas_xerbla(2, "cblas_strmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -53,7 +53,7 @@ else { cblas_xerbla(3, "cblas_strmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -62,7 +62,7 @@ else { cblas_xerbla(4, "cblas_strmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -82,7 +82,7 @@ else { cblas_xerbla(2, "cblas_strmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -93,7 +93,7 @@ else { cblas_xerbla(3, "cblas_strmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -103,7 +103,7 @@ else { cblas_xerbla(4, "cblas_strmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -116,7 +116,7 @@ &F77_incX); } else cblas_xerbla(1, "cblas_strmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_strsm.c +++ b/cblas/src/cblas_strsm.c @@ -38,7 +38,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_strsm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_strsm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -66,7 +66,7 @@ else { cblas_xerbla(4, "cblas_strsm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -75,7 +75,7 @@ else { cblas_xerbla(5, "cblas_strsm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -95,7 +95,7 @@ else { cblas_xerbla(2, "cblas_strsm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -104,7 +104,7 @@ else { cblas_xerbla(3, "cblas_strsm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -114,7 +114,7 @@ else { cblas_xerbla(4, "cblas_strsm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -123,7 +123,7 @@ else { cblas_xerbla(5, "cblas_strsm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -137,7 +137,7 @@ F77_strsm(F77_SD, F77_UL, F77_TA, F77_DI, &F77_N, &F77_M, &alpha, A, &F77_lda, B, &F77_ldb); } else cblas_xerbla(1, "cblas_strsm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_strsv.c +++ b/cblas/src/cblas_strsv.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_strsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -52,7 +52,7 @@ else { cblas_xerbla(3, "cblas_strsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -61,7 +61,7 @@ else { cblas_xerbla(4, "cblas_strsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ else { cblas_xerbla(2, "cblas_strsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -92,7 +92,7 @@ else { cblas_xerbla(3, "cblas_strsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ else { cblas_xerbla(4, "cblas_strsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -115,7 +115,7 @@ &F77_incX); } else cblas_xerbla(1, "cblas_strsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_xerbla.c +++ b/cblas/src/cblas_xerbla.c @@ -5,58 +5,13 @@ #include "cblas.h" #include "cblas_f77.h" +#undef cblas_xerbla void cblas_xerbla(int info, const char *rout, const char *form, ...) { - extern RowMajorStrg; va_list argptr; va_start(argptr, form); - if (RowMajorStrg) - { - if (strstr(rout,"gemm") != 0) - { - if (info == 5 ) info = 4; - else if (info == 4 ) info = 5; - else if (info == 11) info = 9; - else if (info == 9 ) info = 11; - } - else if (strstr(rout,"symm") != 0 || strstr(rout,"hemm") != 0) - { - if (info == 5 ) info = 4; - else if (info == 4 ) info = 5; - } - else if (strstr(rout,"trmm") != 0 || strstr(rout,"trsm") != 0) - { - if (info == 7 ) info = 6; - else if (info == 6 ) info = 7; - } - else if (strstr(rout,"gemv") != 0) - { - if (info == 4) info = 3; - else if (info == 3) info = 4; - } - else if (strstr(rout,"gbmv") != 0) - { - if (info == 4) info = 3; - else if (info == 3) info = 4; - else if (info == 6) info = 5; - else if (info == 5) info = 6; - } - else if (strstr(rout,"ger") != 0) - { - if (info == 3) info = 2; - else if (info == 2) info = 3; - else if (info == 8) info = 6; - else if (info == 6) info = 8; - } - else if ( (strstr(rout,"her2") != 0 || strstr(rout,"hpr2") != 0) - && strstr(rout,"her2k") == 0 ) - { - if (info == 8) info = 6; - else if (info == 6) info = 8; - } - } if (info) fprintf(stderr, "Parameter %d to routine %s was incorrect\n", info, rout); vfprintf(stderr, form, argptr); --- a/cblas/src/cblas_zgbmv.c +++ b/cblas/src/cblas_zgbmv.c @@ -43,7 +43,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (TransA == CblasNoTrans) TA = 'N'; @@ -52,7 +52,7 @@ else { cblas_xerbla(2, "cblas_zgbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -132,7 +132,7 @@ else { cblas_xerbla(2, "cblas_zgbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -160,7 +160,7 @@ } } else cblas_xerbla(1, "cblas_zgbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zgemm.c +++ b/cblas/src/cblas_zgemm.c @@ -38,7 +38,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -48,7 +48,7 @@ else { cblas_xerbla(2, "cblas_zgemm","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(3, "cblas_zgemm","Illegal TransB setting, %d\n", TransB); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -80,7 +80,7 @@ else { cblas_xerbla(2, "cblas_zgemm","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -90,7 +90,7 @@ else { cblas_xerbla(2, "cblas_zgemm","Illegal TransB setting, %d\n", TransB); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -103,7 +103,7 @@ &F77_ldb, A, &F77_lda, beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_zgemm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zgemv.c +++ b/cblas/src/cblas_zgemv.c @@ -40,7 +40,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { @@ -50,7 +50,7 @@ else { cblas_xerbla(2, "cblas_zgemv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -129,7 +129,7 @@ else { cblas_xerbla(2, "cblas_zgemv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -158,7 +158,7 @@ } } else cblas_xerbla(1, "cblas_zgemv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zgerc.c +++ b/cblas/src/cblas_zgerc.c @@ -30,7 +30,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { F77_zgerc( &F77_M, &F77_N, alpha, X, &F77_incX, Y, &F77_incY, A, @@ -78,7 +78,7 @@ free(y); } else cblas_xerbla(1, "cblas_zgerc", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zgeru.c +++ b/cblas/src/cblas_zgeru.c @@ -24,7 +24,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { @@ -38,7 +38,7 @@ &F77_lda); } else cblas_xerbla(1, "cblas_zgeru", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zhbmv.c +++ b/cblas/src/cblas_zhbmv.c @@ -39,7 +39,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_zhbmv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -121,7 +121,7 @@ else { cblas_xerbla(2, "cblas_zhbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -134,7 +134,7 @@ else { cblas_xerbla(1, "cblas_zhbmv","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -153,7 +153,7 @@ while (y != st); } } - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zhemm.c +++ b/cblas/src/cblas_zhemm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_zhemm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_zhemm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -76,7 +76,7 @@ else { cblas_xerbla(2, "cblas_zhemm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -86,7 +86,7 @@ else { cblas_xerbla(3, "cblas_zhemm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -100,7 +100,7 @@ &F77_lda, B, &F77_ldb, beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_zhemm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zhemv.c +++ b/cblas/src/cblas_zhemv.c @@ -39,7 +39,7 @@ RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_zhemv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -122,7 +122,7 @@ else { cblas_xerbla(2, "cblas_zhemv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -135,7 +135,7 @@ else { cblas_xerbla(1, "cblas_zhemv","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -154,7 +154,7 @@ while (y != st); } } - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zher2.c +++ b/cblas/src/cblas_zher2.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_zher2", "Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -63,7 +63,7 @@ else { cblas_xerbla(2, "cblas_zher2", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -138,7 +138,7 @@ else { cblas_xerbla(1, "cblas_zher2", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -147,7 +147,7 @@ if(Y!=y) free(y); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zher2k.c +++ b/cblas/src/cblas_zher2k.c @@ -39,7 +39,7 @@ double ALPHA[2]; const double *alp=(double *)alpha; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; RowMajorStrg = 0; if( Order == CblasColMajor ) @@ -50,7 +50,7 @@ else { cblas_xerbla(2, "cblas_zher2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -61,7 +61,7 @@ else { cblas_xerbla(3, "cblas_zher2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -81,7 +81,7 @@ else { cblas_xerbla(2, "cblas_zher2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -91,7 +91,7 @@ else { cblas_xerbla(3, "cblas_zher2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -104,7 +104,7 @@ ALPHA[1]= -alp[1]; F77_zher2k(F77_UL,F77_TR, &F77_N, &F77_K, ALPHA, A, &F77_lda, B, &F77_ldb, &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_zher2k", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zher.c +++ b/cblas/src/cblas_zher.c @@ -34,7 +34,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -42,7 +42,7 @@ else { cblas_xerbla(2, "cblas_zher","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ else { cblas_xerbla(2, "cblas_zher","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -104,7 +104,7 @@ if(X!=x) free(x); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zherk.c +++ b/cblas/src/cblas_zherk.c @@ -35,7 +35,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_zherk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -55,7 +55,7 @@ else { cblas_xerbla(3, "cblas_zherk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -75,7 +75,7 @@ else { cblas_xerbla(3, "cblas_zherk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -85,7 +85,7 @@ else { cblas_xerbla(3, "cblas_zherk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -99,7 +99,7 @@ &beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_zherk", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zhpmv.c +++ b/cblas/src/cblas_zhpmv.c @@ -37,7 +37,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -45,7 +45,7 @@ else { cblas_xerbla(2, "cblas_zhpmv","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -120,7 +120,7 @@ else { cblas_xerbla(2, "cblas_zhpmv","Illegal Uplo setting, %d\n", Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -134,7 +134,7 @@ else { cblas_xerbla(1, "cblas_zhpmv","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -154,7 +154,7 @@ } } - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zhpr2.c +++ b/cblas/src/cblas_zhpr2.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_zhpr2","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -62,7 +62,7 @@ else { cblas_xerbla(2, "cblas_zhpr2","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -136,7 +136,7 @@ else { cblas_xerbla(1, "cblas_zhpr2","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -144,7 +144,7 @@ free(x); if(Y!=y) free(y); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zhpr.c +++ b/cblas/src/cblas_zhpr.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasLower) UL = 'L'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_zhpr","Illegal Uplo setting, %d\n",Uplo ); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -59,7 +59,7 @@ else { cblas_xerbla(2, "cblas_zhpr","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -103,13 +103,13 @@ } else { cblas_xerbla(1, "cblas_zhpr","Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } if(X!=x) free(x); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zsymm.c +++ b/cblas/src/cblas_zsymm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_zsymm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_zsymm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -76,7 +76,7 @@ else { cblas_xerbla(2, "cblas_zsymm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -86,7 +86,7 @@ else { cblas_xerbla(3, "cblas_zsymm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -100,7 +100,7 @@ B, &F77_ldb, beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_zsymm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zsyr2k.c +++ b/cblas/src/cblas_zsyr2k.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_zsyr2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -58,7 +58,7 @@ else { cblas_xerbla(3, "cblas_zsyr2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -79,7 +79,7 @@ else { cblas_xerbla(3, "cblas_zsyr2k", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -89,7 +89,7 @@ else { cblas_xerbla(3, "cblas_zsyr2k", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -102,7 +102,7 @@ F77_zsyr2k(F77_UL, F77_TR, &F77_N, &F77_K, alpha, A, &F77_lda, B, &F77_ldb, beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_zsyr2k", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_zsyrk.c +++ b/cblas/src/cblas_zsyrk.c @@ -35,7 +35,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -45,7 +45,7 @@ else { cblas_xerbla(2, "cblas_zsyrk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -56,7 +56,7 @@ else { cblas_xerbla(3, "cblas_zsyrk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -77,7 +77,7 @@ else { cblas_xerbla(3, "cblas_zsyrk", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -87,7 +87,7 @@ else { cblas_xerbla(3, "cblas_zsyrk", "Illegal Trans setting, %d\n", Trans); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -101,7 +101,7 @@ beta, C, &F77_ldc); } else cblas_xerbla(1, "cblas_zsyrk", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ztbmv.c +++ b/cblas/src/cblas_ztbmv.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_ztbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -54,7 +54,7 @@ else { cblas_xerbla(3, "cblas_ztbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -63,7 +63,7 @@ else { cblas_xerbla(4, "cblas_ztbmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -83,7 +83,7 @@ else { cblas_xerbla(2, "cblas_ztbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -115,7 +115,7 @@ else { cblas_xerbla(3, "cblas_ztbmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -125,7 +125,7 @@ else { cblas_xerbla(4, "cblas_ztbmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -152,7 +152,7 @@ } } else cblas_xerbla(1, "cblas_ztbmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ztbsv.c +++ b/cblas/src/cblas_ztbsv.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_ztbsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -54,7 +54,7 @@ else { cblas_xerbla(3, "cblas_ztbsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -63,7 +63,7 @@ else { cblas_xerbla(4, "cblas_ztbsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -83,7 +83,7 @@ else { cblas_xerbla(2, "cblas_ztbsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -119,7 +119,7 @@ else { cblas_xerbla(3, "cblas_ztbsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -129,7 +129,7 @@ else { cblas_xerbla(4, "cblas_ztbsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -156,7 +156,7 @@ } } else cblas_xerbla(1, "cblas_ztbsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ztpmv.c +++ b/cblas/src/cblas_ztpmv.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_ztpmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -51,7 +51,7 @@ else { cblas_xerbla(3, "cblas_ztpmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ else { cblas_xerbla(4, "cblas_ztpmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -79,7 +79,7 @@ else { cblas_xerbla(2, "cblas_ztpmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -111,7 +111,7 @@ else { cblas_xerbla(3, "cblas_ztpmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -121,7 +121,7 @@ else { cblas_xerbla(4, "cblas_ztpmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -146,7 +146,7 @@ } } else cblas_xerbla(1, "cblas_ztpmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ztpsv.c +++ b/cblas/src/cblas_ztpsv.c @@ -33,7 +33,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -41,7 +41,7 @@ else { cblas_xerbla(2, "cblas_ztpsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -51,7 +51,7 @@ else { cblas_xerbla(3, "cblas_ztpsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -60,7 +60,7 @@ else { cblas_xerbla(4, "cblas_ztpsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -79,7 +79,7 @@ else { cblas_xerbla(2, "cblas_ztpsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -115,7 +115,7 @@ else { cblas_xerbla(3, "cblas_ztpsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -125,7 +125,7 @@ else { cblas_xerbla(4, "cblas_ztpsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -151,7 +151,7 @@ } } else cblas_xerbla(1, "cblas_ztpsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ztrmm.c +++ b/cblas/src/cblas_ztrmm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -46,7 +46,7 @@ else { cblas_xerbla(2, "cblas_ztrmm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -55,7 +55,7 @@ else { cblas_xerbla(3, "cblas_ztrmm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -66,7 +66,7 @@ else { cblas_xerbla(4, "cblas_ztrmm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -76,7 +76,7 @@ else { cblas_xerbla(5, "cblas_ztrmm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -97,7 +97,7 @@ else { cblas_xerbla(2, "cblas_ztrmm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -107,7 +107,7 @@ else { cblas_xerbla(3, "cblas_ztrmm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -118,7 +118,7 @@ else { cblas_xerbla(4, "cblas_ztrmm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -128,7 +128,7 @@ else { cblas_xerbla(5, "cblas_ztrmm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -143,7 +143,7 @@ F77_ztrmm(F77_SD, F77_UL, F77_TA, F77_DI, &F77_N, &F77_M, alpha, A, &F77_lda, B, &F77_ldb); } else cblas_xerbla(1, "cblas_ztrmm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ztrmv.c +++ b/cblas/src/cblas_ztrmv.c @@ -36,7 +36,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -44,7 +44,7 @@ else { cblas_xerbla(2, "cblas_ztrmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -54,7 +54,7 @@ else { cblas_xerbla(3, "cblas_ztrmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -63,7 +63,7 @@ else { cblas_xerbla(4, "cblas_ztrmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -83,7 +83,7 @@ else { cblas_xerbla(2, "cblas_ztrmv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -115,7 +115,7 @@ else { cblas_xerbla(3, "cblas_ztrmv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -125,7 +125,7 @@ else { cblas_xerbla(4, "cblas_ztrmv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -150,7 +150,7 @@ } } else cblas_xerbla(1, "cblas_ztrmv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ztrsm.c +++ b/cblas/src/cblas_ztrsm.c @@ -37,7 +37,7 @@ extern int CBLAS_CallFromC; extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if( Order == CblasColMajor ) { @@ -47,7 +47,7 @@ else { cblas_xerbla(2, "cblas_ztrsm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -57,7 +57,7 @@ else { cblas_xerbla(3, "cblas_ztrsm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -68,7 +68,7 @@ else { cblas_xerbla(4, "cblas_ztrsm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -78,7 +78,7 @@ else { cblas_xerbla(5, "cblas_ztrsm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -101,7 +101,7 @@ else { cblas_xerbla(2, "cblas_ztrsm", "Illegal Side setting, %d\n", Side); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -111,7 +111,7 @@ else { cblas_xerbla(3, "cblas_ztrsm", "Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -122,7 +122,7 @@ else { cblas_xerbla(4, "cblas_ztrsm", "Illegal Trans setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -132,7 +132,7 @@ else { cblas_xerbla(5, "cblas_ztrsm", "Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -149,7 +149,7 @@ &F77_lda, B, &F77_ldb); } else cblas_xerbla(1, "cblas_ztrsm", "Illegal Order setting, %d\n", Order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/cblas_ztrsv.c +++ b/cblas/src/cblas_ztrsv.c @@ -35,7 +35,7 @@ extern int RowMajorStrg; RowMajorStrg = 0; - CBLAS_CallFromC = 1; + mcblas_fix_info=cblas_fix_info; if (order == CblasColMajor) { if (Uplo == CblasUpper) UL = 'U'; @@ -43,7 +43,7 @@ else { cblas_xerbla(2, "cblas_ztrsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -53,7 +53,7 @@ else { cblas_xerbla(3, "cblas_ztrsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -62,7 +62,7 @@ else { cblas_xerbla(4, "cblas_ztrsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -82,7 +82,7 @@ else { cblas_xerbla(2, "cblas_ztrsv","Illegal Uplo setting, %d\n", Uplo); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -115,7 +115,7 @@ else { cblas_xerbla(3, "cblas_ztrsv","Illegal TransA setting, %d\n", TransA); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -125,7 +125,7 @@ else { cblas_xerbla(4, "cblas_ztrsv","Illegal Diag setting, %d\n", Diag); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } @@ -150,7 +150,7 @@ } } else cblas_xerbla(1, "cblas_ztrsv", "Illegal Order setting, %d\n", order); - CBLAS_CallFromC = 0; + mcblas_fix_info = NULL; RowMajorStrg = 0; return; } --- a/cblas/src/Makefile +++ b/cblas/src/Makefile @@ -12,7 +12,8 @@ # Error handling routines for level 2 & 3 -errhand = cblas_globals.o cblas_xerbla.o xerbla.o +#errhand = cblas_globals.o cblas_xerbla.o xerbla.o +errhand = cblas_xerbla.o xerbla.o # Object files of all routines alev = $(alev1) $(alev2) $(alev3) $(errhand) --- a/cblas/src/xerbla.c +++ b/cblas/src/xerbla.c @@ -3,16 +3,24 @@ #include "cblas.h" #include "cblas_f77.h" +/* int RowMajorStrg; */ +int CBLAS_CallFromC; + #define XerblaStrLen 6 #define XerblaStrLen1 7 +void (*mcblas_fix_info)(int *,const char *)=NULL; + #ifdef F77_CHAR -void F77_xerbla(F77_CHAR F77_srname, void *vinfo) +void F77_xerbli(F77_CHAR F77_srname, void *vinfo) #else -void F77_xerbla(char *srname, void *vinfo) +void F77_xerbli(char *srname, void *vinfo) #endif { +#define XerblaStrLen 6 +#define XerblaStrLen1 7 + #ifdef F77_CHAR char *srname; #endif @@ -27,21 +35,52 @@ int i; #endif - extern int CBLAS_CallFromC; + if (!mcblas_fix_info) { #ifdef F77_CHAR - srname = F2C_STR(F77_srname, XerblaStrLen); + F77_xerbla(F77_sname,vinfo); +#else + F77_xerbla(srname,vinfo); +#endif + } else { +#ifdef F77_CHAR + srname = F2C_STR(F77_srname, XerblaStrLen); #endif - if (CBLAS_CallFromC) - { - for(i=0; i != XerblaStrLen; i++) rout[i+6] = tolower(srname[i]); - rout[XerblaStrLen+6] = '\0'; - cblas_xerbla(*info+1,rout,""); - } - else - { - fprintf(stderr, "Parameter %d to routine %s was incorrect\n", - *info, srname); + for(i=0; i != XerblaStrLen; i++) rout[i+6] = tolower(srname[i]); + rout[XerblaStrLen+6] = '\0'; + (*info)++; + cblas_xerbla(*info,rout,""); + } } + +#ifdef F77_CHAR +void F77_xerbla(F77_CHAR F77_srname, void *vinfo) +#else +void F77_xerbla(char *srname, void *vinfo) +#endif + +{ +#ifdef F77_CHAR + char *srname; +#endif + +#ifdef F77_INT + F77_INT *info=vinfo; + F77_INT i; +#else + int *info=vinfo; + int i; +#endif + +#ifdef F77_CHAR + srname = F2C_STR(F77_srname, XerblaStrLen); +#endif + + fprintf(stderr, "Parameter %d to routine %s was incorrect\n", + *info, srname); + + exit(-1); + +} --- a/src/cgbmv.f +++ b/src/cgbmv.f @@ -148,7 +148,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX,MIN @@ -176,7 +176,7 @@ INFO = 13 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CGBMV ',INFO) + CALL XERBLI('CGBMV ',INFO) RETURN END IF * --- a/src/cgemm.f +++ b/src/cgemm.f @@ -136,7 +136,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX @@ -199,7 +199,7 @@ INFO = 13 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CGEMM ',INFO) + CALL XERBLI('CGEMM ',INFO) RETURN END IF * --- a/src/cgemv.f +++ b/src/cgemv.f @@ -121,7 +121,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX @@ -145,7 +145,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CGEMV ',INFO) + CALL XERBLI('CGEMV ',INFO) RETURN END IF * --- a/src/cgeru.f +++ b/src/cgeru.f @@ -89,7 +89,7 @@ INTEGER I,INFO,IX,J,JY,KX * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -110,7 +110,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CGERU ',INFO) + CALL XERBLI('CGERU ',INFO) RETURN END IF * --- a/src/chbmv.f +++ b/src/chbmv.f @@ -149,7 +149,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX,MIN,REAL @@ -172,7 +172,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHBMV ',INFO) + CALL XERBLI('CHBMV ',INFO) RETURN END IF * --- a/src/chemm.f +++ b/src/chemm.f @@ -142,7 +142,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX,REAL @@ -187,7 +187,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHEMM ',INFO) + CALL XERBLI('CHEMM ',INFO) RETURN END IF * --- a/src/chemv.f +++ b/src/chemv.f @@ -118,7 +118,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX,REAL @@ -139,7 +139,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHEMV ',INFO) + CALL XERBLI('CHEMV ',INFO) RETURN END IF * --- a/src/cher2.f +++ b/src/cher2.f @@ -114,7 +114,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX,REAL @@ -135,7 +135,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHER2 ',INFO) + CALL XERBLI('CHER2 ',INFO) RETURN END IF * --- a/src/cher2k.f +++ b/src/cher2k.f @@ -148,7 +148,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX,REAL @@ -192,7 +192,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHER2K',INFO) + CALL XERBLI('CHER2K',INFO) RETURN END IF * --- a/src/cher.f +++ b/src/cher.f @@ -103,7 +103,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX,REAL @@ -122,7 +122,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHER ',INFO) + CALL XERBLI('CHER ',INFO) RETURN END IF * --- a/src/cherk.f +++ b/src/cherk.f @@ -128,7 +128,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CMPLX,CONJG,MAX,REAL @@ -169,7 +169,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHERK ',INFO) + CALL XERBLI('CHERK ',INFO) RETURN END IF * --- a/src/chpmv.f +++ b/src/chpmv.f @@ -115,7 +115,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,REAL @@ -134,7 +134,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHPMV ',INFO) + CALL XERBLI('CHPMV ',INFO) RETURN END IF * --- a/src/chpr2.f +++ b/src/chpr2.f @@ -111,7 +111,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,REAL @@ -130,7 +130,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHPR2 ',INFO) + CALL XERBLI('CHPR2 ',INFO) RETURN END IF * --- a/src/chpr.f +++ b/src/chpr.f @@ -100,7 +100,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,REAL @@ -117,7 +117,7 @@ INFO = 5 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CHPR ',INFO) + CALL XERBLI('CHPR ',INFO) RETURN END IF * --- a/src/csymm.f +++ b/src/csymm.f @@ -140,7 +140,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -185,7 +185,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CSYMM ',INFO) + CALL XERBLI('CSYMM ',INFO) RETURN END IF * --- a/src/csyr2k.f +++ b/src/csyr2k.f @@ -139,7 +139,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -183,7 +183,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CSYR2K',INFO) + CALL XERBLI('CSYR2K',INFO) RETURN END IF * --- a/src/csyrk.f +++ b/src/csyrk.f @@ -122,7 +122,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -164,7 +164,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CSYRK ',INFO) + CALL XERBLI('CSYRK ',INFO) RETURN END IF * --- a/src/ctbmv.f +++ b/src/ctbmv.f @@ -153,7 +153,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX,MIN @@ -179,7 +179,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CTBMV ',INFO) + CALL XERBLI('CTBMV ',INFO) RETURN END IF * --- a/src/ctbsv.f +++ b/src/ctbsv.f @@ -156,7 +156,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX,MIN @@ -182,7 +182,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CTBSV ',INFO) + CALL XERBLI('CTBSV ',INFO) RETURN END IF * --- a/src/ctpmv.f +++ b/src/ctpmv.f @@ -113,7 +113,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG @@ -135,7 +135,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CTPMV ',INFO) + CALL XERBLI('CTPMV ',INFO) RETURN END IF * --- a/src/ctpsv.f +++ b/src/ctpsv.f @@ -115,7 +115,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG @@ -137,7 +137,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CTPSV ',INFO) + CALL XERBLI('CTPSV ',INFO) RETURN END IF * --- a/src/ctrmm.f +++ b/src/ctrmm.f @@ -132,7 +132,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX @@ -182,7 +182,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CTRMM ',INFO) + CALL XERBLI('CTRMM ',INFO) RETURN END IF * --- a/src/ctrmv.f +++ b/src/ctrmv.f @@ -116,7 +116,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX @@ -140,7 +140,7 @@ INFO = 8 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CTRMV ',INFO) + CALL XERBLI('CTRMV ',INFO) RETURN END IF * --- a/src/ctrsm.f +++ b/src/ctrsm.f @@ -134,7 +134,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX @@ -184,7 +184,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CTRSM ',INFO) + CALL XERBLI('CTRSM ',INFO) RETURN END IF * --- a/src/ctrsv.f +++ b/src/ctrsv.f @@ -118,7 +118,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX @@ -142,7 +142,7 @@ INFO = 8 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CTRSV ',INFO) + CALL XERBLI('CTRSV ',INFO) RETURN END IF * --- a/src/dgbmv.f +++ b/src/dgbmv.f @@ -142,7 +142,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX,MIN @@ -170,7 +170,7 @@ INFO = 13 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DGBMV ',INFO) + CALL XERBLI('DGBMV ',INFO) RETURN END IF * --- a/src/dgemm.f +++ b/src/dgemm.f @@ -136,7 +136,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -193,7 +193,7 @@ INFO = 13 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DGEMM ',INFO) + CALL XERBLI('DGEMM ',INFO) RETURN END IF * --- a/src/dgemv.f +++ b/src/dgemv.f @@ -116,7 +116,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -140,7 +140,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DGEMV ',INFO) + CALL XERBLI('DGEMV ',INFO) RETURN END IF * --- a/src/dger.f +++ b/src/dger.f @@ -89,7 +89,7 @@ INTEGER I,INFO,IX,J,JY,KX * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -110,7 +110,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DGER ',INFO) + CALL XERBLI('DGER ',INFO) RETURN END IF * --- a/src/dsbmv.f +++ b/src/dsbmv.f @@ -145,7 +145,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX,MIN @@ -168,7 +168,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSBMV ',INFO) + CALL XERBLI('DSBMV ',INFO) RETURN END IF * --- a/src/dspmv.f +++ b/src/dspmv.f @@ -111,7 +111,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -127,7 +127,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSPMV ',INFO) + CALL XERBLI('DSPMV ',INFO) RETURN END IF * --- a/src/dspr2.f +++ b/src/dspr2.f @@ -108,7 +108,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -124,7 +124,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSPR2 ',INFO) + CALL XERBLI('DSPR2 ',INFO) RETURN END IF * --- a/src/dspr.f +++ b/src/dspr.f @@ -97,7 +97,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -111,7 +111,7 @@ INFO = 5 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSPR ',INFO) + CALL XERBLI('DSPR ',INFO) RETURN END IF * --- a/src/dsymm.f +++ b/src/dsymm.f @@ -140,7 +140,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -183,7 +183,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSYMM ',INFO) + CALL XERBLI('DSYMM ',INFO) RETURN END IF * --- a/src/dsymv.f +++ b/src/dsymv.f @@ -114,7 +114,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -135,7 +135,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSYMV ',INFO) + CALL XERBLI('DSYMV ',INFO) RETURN END IF * --- a/src/dsyr2.f +++ b/src/dsyr2.f @@ -111,7 +111,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -132,7 +132,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSYR2 ',INFO) + CALL XERBLI('DSYR2 ',INFO) RETURN END IF * --- a/src/dsyr2k.f +++ b/src/dsyr2k.f @@ -143,7 +143,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -186,7 +186,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSYR2K',INFO) + CALL XERBLI('DSYR2K',INFO) RETURN END IF * --- a/src/dsyr.f +++ b/src/dsyr.f @@ -100,7 +100,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -119,7 +119,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSYR ',INFO) + CALL XERBLI('DSYR ',INFO) RETURN END IF * --- a/src/dsyrk.f +++ b/src/dsyrk.f @@ -124,7 +124,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -165,7 +165,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DSYRK ',INFO) + CALL XERBLI('DSYRK ',INFO) RETURN END IF * --- a/src/dtbmv.f +++ b/src/dtbmv.f @@ -153,7 +153,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX,MIN @@ -179,7 +179,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DTBMV ',INFO) + CALL XERBLI('DTBMV ',INFO) RETURN END IF * --- a/src/dtbsv.f +++ b/src/dtbsv.f @@ -156,7 +156,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX,MIN @@ -182,7 +182,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DTBSV ',INFO) + CALL XERBLI('DTBSV ',INFO) RETURN END IF * --- a/src/dtpmv.f +++ b/src/dtpmv.f @@ -113,7 +113,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -132,7 +132,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DTPMV ',INFO) + CALL XERBLI('DTPMV ',INFO) RETURN END IF * --- a/src/dtpsv.f +++ b/src/dtpsv.f @@ -115,7 +115,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -134,7 +134,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DTPSV ',INFO) + CALL XERBLI('DTPSV ',INFO) RETURN END IF * --- a/src/dtrmm.f +++ b/src/dtrmm.f @@ -132,7 +132,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -179,7 +179,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DTRMM ',INFO) + CALL XERBLI('DTRMM ',INFO) RETURN END IF * --- a/src/dtrmv.f +++ b/src/dtrmv.f @@ -116,7 +116,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -140,7 +140,7 @@ INFO = 8 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DTRMV ',INFO) + CALL XERBLI('DTRMV ',INFO) RETURN END IF * --- a/src/dtrsm.f +++ b/src/dtrsm.f @@ -135,7 +135,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -182,7 +182,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DTRSM ',INFO) + CALL XERBLI('DTRSM ',INFO) RETURN END IF * --- a/src/dtrsv.f +++ b/src/dtrsv.f @@ -116,7 +116,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -140,7 +140,7 @@ INFO = 8 END IF IF (INFO.NE.0) THEN - CALL XERBLA('DTRSV ',INFO) + CALL XERBLI('DTRSV ',INFO) RETURN END IF * --- a/src/sgbmv.f +++ b/src/sgbmv.f @@ -142,7 +142,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX,MIN @@ -170,7 +170,7 @@ INFO = 13 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SGBMV ',INFO) + CALL XERBLI('SGBMV ',INFO) RETURN END IF * --- a/src/sgemm.f +++ b/src/sgemm.f @@ -136,7 +136,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -193,7 +193,7 @@ INFO = 13 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SGEMM ',INFO) + CALL XERBLI('SGEMM ',INFO) RETURN END IF * --- a/src/sgemv.f +++ b/src/sgemv.f @@ -116,7 +116,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -140,7 +140,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SGEMV ',INFO) + CALL XERBLI('SGEMV ',INFO) RETURN END IF * --- a/src/sger.f +++ b/src/sger.f @@ -89,7 +89,7 @@ INTEGER I,INFO,IX,J,JY,KX * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -110,7 +110,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SGER ',INFO) + CALL XERBLI('SGER ',INFO) RETURN END IF * --- a/src/ssbmv.f +++ b/src/ssbmv.f @@ -145,7 +145,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX,MIN @@ -168,7 +168,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSBMV ',INFO) + CALL XERBLI('SSBMV ',INFO) RETURN END IF * --- a/src/sspmv.f +++ b/src/sspmv.f @@ -111,7 +111,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -127,7 +127,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSPMV ',INFO) + CALL XERBLI('SSPMV ',INFO) RETURN END IF * --- a/src/sspr2.f +++ b/src/sspr2.f @@ -108,7 +108,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -124,7 +124,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSPR2 ',INFO) + CALL XERBLI('SSPR2 ',INFO) RETURN END IF * --- a/src/sspr.f +++ b/src/sspr.f @@ -97,7 +97,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -111,7 +111,7 @@ INFO = 5 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSPR ',INFO) + CALL XERBLI('SSPR ',INFO) RETURN END IF * --- a/src/ssymm.f +++ b/src/ssymm.f @@ -140,7 +140,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -183,7 +183,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSYMM ',INFO) + CALL XERBLI('SSYMM ',INFO) RETURN END IF * --- a/src/ssymv.f +++ b/src/ssymv.f @@ -114,7 +114,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -135,7 +135,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSYMV ',INFO) + CALL XERBLI('SSYMV ',INFO) RETURN END IF * --- a/src/ssyr2.f +++ b/src/ssyr2.f @@ -111,7 +111,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -132,7 +132,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSYR2 ',INFO) + CALL XERBLI('SSYR2 ',INFO) RETURN END IF * --- a/src/ssyr2k.f +++ b/src/ssyr2k.f @@ -143,7 +143,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -186,7 +186,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSYR2K',INFO) + CALL XERBLI('SSYR2K',INFO) RETURN END IF * --- a/src/ssyr.f +++ b/src/ssyr.f @@ -100,7 +100,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -119,7 +119,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSYR ',INFO) + CALL XERBLI('SSYR ',INFO) RETURN END IF * --- a/src/ssyrk.f +++ b/src/ssyrk.f @@ -124,7 +124,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -165,7 +165,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('SSYRK ',INFO) + CALL XERBLI('SSYRK ',INFO) RETURN END IF * --- a/src/stbmv.f +++ b/src/stbmv.f @@ -153,7 +153,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX,MIN @@ -179,7 +179,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('STBMV ',INFO) + CALL XERBLI('STBMV ',INFO) RETURN END IF * --- a/src/stbsv.f +++ b/src/stbsv.f @@ -156,7 +156,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX,MIN @@ -182,7 +182,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('STBSV ',INFO) + CALL XERBLI('STBSV ',INFO) RETURN END IF * --- a/src/stpmv.f +++ b/src/stpmv.f @@ -113,7 +113,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -132,7 +132,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('STPMV ',INFO) + CALL XERBLI('STPMV ',INFO) RETURN END IF * --- a/src/stpsv.f +++ b/src/stpsv.f @@ -115,7 +115,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * * Test the input parameters. @@ -134,7 +134,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('STPSV ',INFO) + CALL XERBLI('STPSV ',INFO) RETURN END IF * --- a/src/strmm.f +++ b/src/strmm.f @@ -132,7 +132,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -179,7 +179,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('STRMM ',INFO) + CALL XERBLI('STRMM ',INFO) RETURN END IF * --- a/src/strmv.f +++ b/src/strmv.f @@ -116,7 +116,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -140,7 +140,7 @@ INFO = 8 END IF IF (INFO.NE.0) THEN - CALL XERBLA('STRMV ',INFO) + CALL XERBLI('STRMV ',INFO) RETURN END IF * --- a/src/strsm.f +++ b/src/strsm.f @@ -135,7 +135,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -182,7 +182,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('STRSM ',INFO) + CALL XERBLI('STRSM ',INFO) RETURN END IF * --- a/src/strsv.f +++ b/src/strsv.f @@ -118,7 +118,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -142,7 +142,7 @@ INFO = 8 END IF IF (INFO.NE.0) THEN - CALL XERBLA('STRSV ',INFO) + CALL XERBLI('STRSV ',INFO) RETURN END IF * --- a/src/xerbla.f +++ b/src/xerbla.f @@ -1,4 +1,4 @@ - SUBROUTINE XERBLA( SRNAME, INFO ) + SUBROUTINE XERBLI(SRNAME,INFO) * * -- LAPACK auxiliary routine (preliminary version) -- * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. @@ -12,7 +12,7 @@ * Purpose * ======= * -* XERBLA is an error handler for the LAPACK routines. +* XERBLI is an error handler for the LAPACK routines. * It is called by an LAPACK routine if an input parameter has an * invalid value. A message is printed and execution stops. * @@ -23,7 +23,7 @@ * ========= * * SRNAME (input) CHARACTER*(*) -* The name of the routine which called XERBLA. +* The name of the routine which called XERBLI. * * INFO (input) INTEGER * The position of the invalid parameter in the parameter list @@ -43,6 +43,6 @@ 9999 FORMAT( ' ** On entry to ', A, ' parameter number ', I2, ' had ', $ 'an illegal value' ) * -* End of XERBLA +* End of XERBLI * END --- a/src/zgbmv.f +++ b/src/zgbmv.f @@ -148,7 +148,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX,MIN @@ -176,7 +176,7 @@ INFO = 13 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZGBMV ',INFO) + CALL XERBLI('ZGBMV ',INFO) RETURN END IF * --- a/src/zgemm.f +++ b/src/zgemm.f @@ -136,7 +136,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX @@ -199,7 +199,7 @@ INFO = 13 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZGEMM ',INFO) + CALL XERBLI('ZGEMM ',INFO) RETURN END IF * --- a/src/zgemv.f +++ b/src/zgemv.f @@ -121,7 +121,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX @@ -145,7 +145,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZGEMV ',INFO) + CALL XERBLI('ZGEMV ',INFO) RETURN END IF * --- a/src/zgerc.f +++ b/src/zgerc.f @@ -89,7 +89,7 @@ INTEGER I,INFO,IX,J,JY,KX * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX @@ -110,7 +110,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZGERC ',INFO) + CALL XERBLI('ZGERC ',INFO) RETURN END IF * --- a/src/zgeru.f +++ b/src/zgeru.f @@ -89,7 +89,7 @@ INTEGER I,INFO,IX,J,JY,KX * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -110,7 +110,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZGERU ',INFO) + CALL XERBLI('ZGERU ',INFO) RETURN END IF * --- a/src/zhbmv.f +++ b/src/zhbmv.f @@ -149,7 +149,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX,MIN @@ -172,7 +172,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHBMV ',INFO) + CALL XERBLI('ZHBMV ',INFO) RETURN END IF * --- a/src/zhemm.f +++ b/src/zhemm.f @@ -142,7 +142,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX @@ -187,7 +187,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHEMM ',INFO) + CALL XERBLI('ZHEMM ',INFO) RETURN END IF * --- a/src/zhemv.f +++ b/src/zhemv.f @@ -118,7 +118,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX @@ -139,7 +139,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHEMV ',INFO) + CALL XERBLI('ZHEMV ',INFO) RETURN END IF * --- a/src/zher2.f +++ b/src/zher2.f @@ -114,7 +114,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX @@ -135,7 +135,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHER2 ',INFO) + CALL XERBLI('ZHER2 ',INFO) RETURN END IF * --- a/src/zher2k.f +++ b/src/zher2k.f @@ -148,7 +148,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX @@ -192,7 +192,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHER2K',INFO) + CALL XERBLI('ZHER2K',INFO) RETURN END IF * --- a/src/zher.f +++ b/src/zher.f @@ -103,7 +103,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG,MAX @@ -122,7 +122,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHER ',INFO) + CALL XERBLI('ZHER ',INFO) RETURN END IF * --- a/src/zherk.f +++ b/src/zherk.f @@ -128,7 +128,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCMPLX,DCONJG,MAX @@ -169,7 +169,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHERK ',INFO) + CALL XERBLI('ZHERK ',INFO) RETURN END IF * --- a/src/zhpmv.f +++ b/src/zhpmv.f @@ -115,7 +115,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG @@ -134,7 +134,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHPMV ',INFO) + CALL XERBLI('ZHPMV ',INFO) RETURN END IF * --- a/src/zhpr2.f +++ b/src/zhpr2.f @@ -111,7 +111,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG @@ -130,7 +130,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHPR2 ',INFO) + CALL XERBLI('ZHPR2 ',INFO) RETURN END IF * --- a/src/zhpr.f +++ b/src/zhpr.f @@ -100,7 +100,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DBLE,DCONJG @@ -117,7 +117,7 @@ INFO = 5 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZHPR ',INFO) + CALL XERBLI('ZHPR ',INFO) RETURN END IF * --- a/src/zsymm.f +++ b/src/zsymm.f @@ -140,7 +140,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -185,7 +185,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZSYMM ',INFO) + CALL XERBLI('ZSYMM ',INFO) RETURN END IF * --- a/src/zsyr2k.f +++ b/src/zsyr2k.f @@ -139,7 +139,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -183,7 +183,7 @@ INFO = 12 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZSYR2K',INFO) + CALL XERBLI('ZSYR2K',INFO) RETURN END IF * --- a/src/zsyrk.f +++ b/src/zsyrk.f @@ -122,7 +122,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC MAX @@ -164,7 +164,7 @@ INFO = 10 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZSYRK ',INFO) + CALL XERBLI('ZSYRK ',INFO) RETURN END IF * --- a/src/ztbmv.f +++ b/src/ztbmv.f @@ -153,7 +153,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX,MIN @@ -179,7 +179,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZTBMV ',INFO) + CALL XERBLI('ZTBMV ',INFO) RETURN END IF * --- a/src/ztbsv.f +++ b/src/ztbsv.f @@ -156,7 +156,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX,MIN @@ -182,7 +182,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZTBSV ',INFO) + CALL XERBLI('ZTBSV ',INFO) RETURN END IF * --- a/src/ztpmv.f +++ b/src/ztpmv.f @@ -113,7 +113,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG @@ -135,7 +135,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZTPMV ',INFO) + CALL XERBLI('ZTPMV ',INFO) RETURN END IF * --- a/src/ztpsv.f +++ b/src/ztpsv.f @@ -115,7 +115,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG @@ -137,7 +137,7 @@ INFO = 7 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZTPSV ',INFO) + CALL XERBLI('ZTPSV ',INFO) RETURN END IF * --- a/src/ztrmm.f +++ b/src/ztrmm.f @@ -132,7 +132,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX @@ -182,7 +182,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZTRMM ',INFO) + CALL XERBLI('ZTRMM ',INFO) RETURN END IF * --- a/src/ztrmv.f +++ b/src/ztrmv.f @@ -116,7 +116,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX @@ -140,7 +140,7 @@ INFO = 8 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZTRMV ',INFO) + CALL XERBLI('ZTRMV ',INFO) RETURN END IF * --- a/src/ztrsm.f +++ b/src/ztrsm.f @@ -134,7 +134,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX @@ -184,7 +184,7 @@ INFO = 11 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZTRSM ',INFO) + CALL XERBLI('ZTRSM ',INFO) RETURN END IF * --- a/src/ztrsv.f +++ b/src/ztrsv.f @@ -118,7 +118,7 @@ EXTERNAL LSAME * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC DCONJG,MAX @@ -142,7 +142,7 @@ INFO = 8 END IF IF (INFO.NE.0) THEN - CALL XERBLA('ZTRSV ',INFO) + CALL XERBLI('ZTRSV ',INFO) RETURN END IF * --- a/cblas/src/cblas.h +++ b/cblas/src/cblas.h @@ -2,6 +2,12 @@ #define CBLAS_H #include +/* Allow the use in C++ code. */ +#ifdef __cplusplus +extern "C" +{ +#endif + /* * Enumerated and derived types */ @@ -564,4 +570,9 @@ void *C, const int ldc); void cblas_xerbla(int p, const char *rout, const char *form, ...); + +#ifdef __cplusplus +} +#endif + #endif --- a/cblas/testing/c_cblat3.f +++ b/cblas/testing/c_cblat3.f @@ -1365,7 +1365,7 @@ * 150 CONTINUE WRITE( NOUT, FMT = 9996 )SNAME - CALL CPRCN3( NTRA, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, + CALL CPRCN3( NOUT, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, $ M, N, ALPHA, LDA, LDB) * 160 CONTINUE --- a/cblas/testing/c_dblat3.f +++ b/cblas/testing/c_dblat3.f @@ -1335,7 +1335,7 @@ * 150 CONTINUE WRITE( NOUT, FMT = 9996 )SNAME - CALL DPRCN3( NTRA, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, + CALL DPRCN3( NOUT, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, $ M, N, ALPHA, LDA, LDB) * 160 CONTINUE --- a/cblas/testing/c_sblas1.c +++ b/cblas/testing/c_sblas1.c @@ -20,12 +20,12 @@ return; } -float F77_scasum(const int *N, void *X, const int *incX) +double F77_scasum(const int *N, void *X, const int *incX) { return cblas_scasum(*N, X, *incX); } -float F77_scnrm2(const int *N, const void *X, const int *incX) +double F77_scnrm2(const int *N, const void *X, const int *incX) { return cblas_scnrm2(*N, X, *incX); } --- a/cblas/testing/c_sblat3.f +++ b/cblas/testing/c_sblat3.f @@ -1339,7 +1339,7 @@ * 150 CONTINUE WRITE( NOUT, FMT = 9996 )SNAME - CALL SPRCN3( NTRA, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, + CALL SPRCN3( NOUT, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, $ M, N, ALPHA, LDA, LDB) * 160 CONTINUE --- a/cblas/testing/c_zblat2.f +++ b/cblas/testing/c_zblat2.f @@ -1350,7 +1350,7 @@ * * Call the subroutine. * - IF( SNAME( 4: 5 ).EQ.'mv' )THEN + IF( SNAME( 10: 11 ).EQ.'mv' )THEN IF( FULL )THEN IF( TRACE ) $ WRITE( NTRA, FMT = 9993 )NC, SNAME, @@ -1376,7 +1376,7 @@ CALL CZTPMV( IORDER, UPLO, TRANS, DIAG, $ N, AA, XX, INCX ) END IF - ELSE IF( SNAME( 4: 5 ).EQ.'sv' )THEN + ELSE IF( SNAME( 10: 11 ).EQ.'sv' )THEN IF( FULL )THEN IF( TRACE ) $ WRITE( NTRA, FMT = 9993 )NC, SNAME, @@ -1465,7 +1465,7 @@ END IF * IF( .NOT.NULL )THEN - IF( SNAME( 4: 5 ).EQ.'mv' )THEN + IF( SNAME( 10: 11 ).EQ.'mv' )THEN * * Check the result. * @@ -1473,7 +1473,7 @@ $ INCX, ZERO, Z, INCX, XT, G, $ XX, EPS, ERR, FATAL, NOUT, $ .TRUE. ) - ELSE IF( SNAME( 4: 5 ).EQ.'sv' )THEN + ELSE IF( SNAME( 10: 11 ).EQ.'sv' )THEN * * Compute approximation to original vector. * @@ -1611,7 +1611,7 @@ * .. Common blocks .. COMMON /INFOC/INFOT, NOUTC, OK * .. Executable Statements .. - CONJ = SNAME( 5: 5 ).EQ.'c' + CONJ = SNAME( 11: 11 ).EQ.'c' * Define the number of arguments. NARGS = 9 * --- a/cblas/testing/c_zblat3.f +++ b/cblas/testing/c_zblat3.f @@ -1366,7 +1366,7 @@ * 150 CONTINUE WRITE( NOUT, FMT = 9996 )SNAME - CALL ZPRCN3( NTRA, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, + CALL ZPRCN3( NOUT, NC, SNAME, IORDER, SIDE, UPLO, TRANSA, DIAG, $ M, N, ALPHA, LDA, LDB) * 160 CONTINUE --- a/doc/faq.html +++ b/doc/faq.html @@ -12,7 +12,7 @@

-

+

Many thanks to the @@ -22,7 +22,7 @@

-

+

Table of Contents @@ -42,7 +42,7 @@

-

+

1) BLAS

@@ -278,7 +278,7 @@ for your machine using ATLAS,
http://www.netlib.org/atlas/
.

-

+

lapack@cs.utk.edu
--- a/man/manl/cscal.l +++ b/man/manl/cscal.l @@ -1,5 +1,6 @@ +.TH CSCAL l "16 October 1992" "BLAS routine" "BLAS routine" .SH NAME - +CSCAL - scales a vector by a constant. .SH SYNOPSIS .TP 31 subroutine cscal(n,ca,cx,incx) --- a/man/manl/zrotg.l +++ b/man/manl/zrotg.l @@ -1,5 +1,6 @@ +.TH ZROTG l "16 October 1992" "BLAS routine" "BLAS routine" .SH NAME - +ZROTG - construct givens plane rotation .SH SYNOPSIS .TP 28 subroutine zrotg(ca,cb,c,s) --- a/man/manl/zscal.l +++ b/man/manl/zscal.l @@ -1,5 +1,6 @@ +.TH ZSCAL l "16 October 1992" "BLAS routine" "BLAS routine" .SH NAME - +ZSCAL - scales a vector by a constant. .SH SYNOPSIS .TP 31 subroutine zscal(n,za,zx,incx) --- a/src/crotg.f +++ b/src/crotg.f @@ -12,21 +12,22 @@ * ===================================================================== * * .. Local Scalars .. - COMPLEX ALPHA - REAL NORM,SCALE + COMPLEX ALPHA,CDUM + REAL NORM,SCALE,CABS3 * .. * .. Intrinsic Functions .. INTRINSIC CABS,CONJG,SQRT * .. + CABS3(CDUM) = sqrt(real(CDUM)**2 + aimag(CDUM)**2) IF (CABS(CA).EQ.0.) THEN C = 0. S = (1.,0.) CA = CB ELSE - SCALE = CABS(CA) + CABS(CB) - NORM = SCALE*SQRT((CABS(CA/SCALE))**2+ (CABS(CB/SCALE))**2) - ALPHA = CA/CABS(CA) - C = CABS(CA)/NORM + SCALE = CABS3(CA) + CABS3(CB) + NORM = SCALE*SQRT((CABS3(CA/SCALE))**2+ (CABS3(CB/SCALE))**2) + ALPHA = CA/CABS3(CA) + C = CABS3(CA)/NORM S = ALPHA*CONJG(CB)/NORM CA = ALPHA*NORM END IF --- a/cblas/testing/c_xerbla.c +++ b/cblas/testing/c_xerbla.c @@ -5,12 +5,14 @@ #include "cblas.h" #include "cblas_test.h" +int RowMajorStrg=0; + void cblas_xerbla(int info, const char *rout, const char *form, ...) { extern int cblas_lerr, cblas_info, cblas_ok; extern int link_xerbla; - extern int RowMajorStrg; extern char *cblas_rout; + int i; /* Initially, c__3chke will call this routine with * global variable link_xerbla=1, and F77_xerbla will set link_xerbla=0. @@ -19,11 +21,13 @@ */ if (link_xerbla) return; + for(i=11; i >= 9; i--) if (rout[i] == ' ') ((char *)rout)[i] = '\0'; if (cblas_rout != NULL && strcmp(cblas_rout, rout) != 0){ printf("***** XERBLA WAS CALLED WITH SRNAME = <%s> INSTEAD OF <%s> *******\n", rout, cblas_rout); cblas_ok = FALSE; } +#if 0 if (RowMajorStrg) { /* To properly check leading dimension problems in cblas__gemm, we @@ -77,6 +81,7 @@ } } +#endif if (info != cblas_info){ printf("***** XERBLA WAS CALLED WITH INFO = %d INSTEAD OF %d in %s *******\n",info, cblas_info, rout); cblas_lerr = PASSED; --- a/src/cgerc.f +++ b/src/cgerc.f @@ -89,7 +89,7 @@ INTEGER I,INFO,IX,J,JY,KX * .. * .. External Subroutines .. - EXTERNAL XERBLA + EXTERNAL XERBLI * .. * .. Intrinsic Functions .. INTRINSIC CONJG,MAX @@ -110,7 +110,7 @@ INFO = 9 END IF IF (INFO.NE.0) THEN - CALL XERBLA('CGERC ',INFO) + CALL XERBLI('CGERC ',INFO) RETURN END IF * debian/patches/series0000644000000000000000000000002112217601312012016 0ustar single-big.patch debian/xdcblat3.10000644000000000000000000000003012217575344010757 0ustar .so man1/libblas-test.1 debian/compat0000644000000000000000000000000212217575723010377 0ustar 9 debian/libblas-dev.install0000644000000000000000000000017112217607037012746 0ustar libblas.so usr/lib/libblas/ libblas.a usr/lib/libblas/ cblas/src/cblas.h usr/include/ cblas/src/cblas_f77.h usr/include/ debian/xdblat3.10000644000000000000000000000003012217575344010614 0ustar .so man1/libblas-test.1 debian/xscblat3.10000644000000000000000000000003012217575344010776 0ustar .so man1/libblas-test.1 debian/libblas-test.install0000644000000000000000000000154012217610101013132 0ustar test/xcblat1 /usr/lib/libblas/ test/xcblat2 /usr/lib/libblas/ test/xcblat3 /usr/lib/libblas/ test/xdblat1 /usr/lib/libblas/ test/xdblat2 /usr/lib/libblas/ test/xdblat3 /usr/lib/libblas/ test/xsblat1 /usr/lib/libblas/ test/xsblat2 /usr/lib/libblas/ test/xsblat3 /usr/lib/libblas/ test/xzblat1 /usr/lib/libblas/ test/xzblat2 /usr/lib/libblas/ test/xzblat3 /usr/lib/libblas/ cblas/testing/xccblat1 /usr/lib/libblas/ cblas/testing/xccblat2 /usr/lib/libblas/ cblas/testing/xccblat3 /usr/lib/libblas/ cblas/testing/xdcblat1 /usr/lib/libblas/ cblas/testing/xdcblat2 /usr/lib/libblas/ cblas/testing/xdcblat3 /usr/lib/libblas/ cblas/testing/xscblat1 /usr/lib/libblas/ cblas/testing/xscblat2 /usr/lib/libblas/ cblas/testing/xscblat3 /usr/lib/libblas/ cblas/testing/xzcblat1 /usr/lib/libblas/ cblas/testing/xzcblat2 /usr/lib/libblas/ cblas/testing/xzcblat3 /usr/lib/libblas/ debian/shlibs.local0000644000000000000000000000004212217606334011466 0ustar libblas 3 libblas3 | libblas.so.3 debian/source/0000755000000000000000000000000012217575344010500 5ustar debian/source/format0000644000000000000000000000001412217575344011706 0ustar 3.0 (quilt) debian/libblas3.docs0000644000000000000000000000002412217611251011525 0ustar debian/test_results debian/libblas3gf.prerm0000644000000000000000000000073712217575344012266 0ustar #! /bin/sh set -e if [ "$1" = "upgrade" ] then # Remove the old declaration update-alternatives --display libblas.so.3gf >/dev/null 2>&1 && update-alternatives --remove-all libblas.so.3gf fi if [ "$1" != "upgrade" ] then # For the transition libblas3gf => libblas3 update-alternatives --remove libblas.so.3gf /usr/lib/libblas/libblas.so.3 fi # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/xcblat2.10000644000000000000000000000003012217575344010612 0ustar .so man1/libblas-test.1 debian/control0000644000000000000000000000767412220065614010605 0ustar Source: blas Priority: optional Maintainer: Debian Science Team Uploaders: Sylvestre Ledru , Sébastien Villemot Standards-Version: 3.9.4 Build-Depends: gfortran, debhelper (>= 9) Build-Depends-Indep: texlive-latex-recommended Section: libs Homepage: http://www.netlib.org/blas/ Vcs-Git: git://anonscm.debian.org/debian-science/packages/blas.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=debian-science/packages/blas.git Package: libblas3 Architecture: any Provides: libblas.so.3gf, libblas3gf, libblas.so.3 Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: libblas3gf (<< 1.2.20110419-3), libatlas3gf-base (<< 3.8.4-4), libopenblas-base (<< 0.1.1-3) Breaks: libblas3gf (<< 1.2.20110419-3), libatlas3gf-base (<< 3.8.4-4), libopenblas-base (<< 0.1.1-3) Conflicts: octave3.2 Description: Basic Linear Algebra Reference implementations, shared library BLAS (Basic Linear Algebra Subroutines) is a set of efficient routines for most of the basic vector and matrix operations. They are widely used as the basis for other high quality linear algebra software, for example lapack and linpack. This implementation is the Fortran 77 reference implementation found at netlib. . This package contains a shared version of the library. Package: libblas3gf Architecture: all Section: oldlibs Depends: ${misc:Depends}, libblas3 Description: Transitional package for libblas Several minor changes to the C interface have been incorporated. One can maintain both versions on a system simultaneously to aid in the transition. Package: libblas-dev Architecture: any Section: libdevel Provides: libblas.so Depends: libblas3 (= ${binary:Version}), ${misc:Depends} Description: Basic Linear Algebra Subroutines 3, static library This package is a binary incompatible upgrade to the blas-dev package. Several minor changes to the C interface have been incorporated. . BLAS (Basic Linear Algebra Subroutines) is a set of efficient routines for most of the basic vector and matrix operations. They are widely used as the basis for other high quality linear algebra software, for example lapack and linpack. This implementation is the Fortran 77 reference implementation found at netlib. . This package contains a static version of the library. Package: libblas-test Architecture: any Section: devel Priority: extra Depends: ${shlibs:Depends}, ${misc:Depends} Description: Basic Linear Algebra Subroutines 3, testing programs BLAS (Basic Linear Algebra Subroutines) is a set of efficient routines for most of the basic vector and matrix operations. They are widely used as the basis for other high quality linear algebra software, for example lapack and linpack. This implementation is the Fortran 77 reference implementation found at netlib. . This package contains a set of programs which test the integrity of an installed blas-compatible shared library. These programs may therefore be used to test the libraries provided by the blas package as well as those provided by the libatlas3-base and libopenblas-base packages. The programs are dynamically linked -- one can explicitly select a library to test by setting the libblas.so.3 alternative, or by using the LD_LIBRARY_PATH or LD_PRELOAD environment variables. Likewise, one can display the library selected using the ldd program in an identical environment. Package: libblas-doc Architecture: all Section: doc Depends: ${misc:Depends} Description: Basic Linear Algebra Subroutines 3, documentation BLAS (Basic Linear Algebra Subroutines) is a set of efficient routines for most of the basic vector and matrix operations. They are widely used as the basis for other high quality linear algebra software, for example lapack and linpack. This implementation is the Fortran 77 reference implementation found at netlib. . This package contains manual pages for the routines, and other supporting documentation debian/xsblat1.10000644000000000000000000000003012217575344010631 0ustar .so man1/libblas-test.1 debian/xccblat1.10000644000000000000000000000003012217575344010754 0ustar .so man1/libblas-test.1 debian/xdcblat2.10000644000000000000000000000003012217575344010756 0ustar .so man1/libblas-test.1 debian/libblas3.prerm0000644000000000000000000000045312217575344011744 0ustar #!/bin/sh set -e if [ "$1" = "upgrade" ] then update-alternatives --display libblas.so.3gf >/dev/null 2>&1 && update-alternatives --remove-all libblas.so.3gf fi if [ "$1" != "upgrade" ] then update-alternatives --remove libblas.so.3 /usr/lib/libblas/libblas.so.3 fi #DEBHELPER# exit 0 debian/xcblat3.10000644000000000000000000000003012217575344010613 0ustar .so man1/libblas-test.1 debian/libblas-test.examples0000644000000000000000000000043512220066026013311 0ustar test/cblat2d test/cblat3d test/dblat2d test/dblat3d test/sblat2d test/sblat3d test/zblat2d test/zblat3d cblas/testing/cin2 cblas/testing/cin3 cblas/testing/din2 cblas/testing/din3 cblas/testing/sin2 cblas/testing/sin3 cblas/testing/zin2 cblas/testing/zin3 debian/run_all_blas_tests.sh debian/patched-docs/0000755000000000000000000000000012220071611011514 5ustar debian/patched-docs/cinterface.tex.diff0000644000000000000000000001202412217575344015271 0ustar --- cinterface.tex.orig Thu Mar 10 17:02:44 2005 +++ cinterface.tex Thu Mar 10 17:05:51 2005 @@ -1,3 +1,10 @@ +\documentclass{article} +\oddsidemargin 0.25in +\textwidth 6.0in +\usepackage{fancyvrb} + +\begin{document} + % % cinterface.tex % @@ -100,13 +107,13 @@ two dimensional arrays, {\tt ORDER}. The standard dictates the following enumerated types: -\begin{verbatim} +\begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102}; enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113}; enum CBLAS_UPLO {CblasUpper=121, CblasLower=122}; enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132}; enum CBLAS_SIDE {CblasLeft=141, CblasRight=142}; -\end{verbatim} +\end{Verbatim} \subsubsection{Considered methods} {\it @@ -227,22 +234,22 @@ {\it \begin{quotation} This is the area where use of a structure is most desired. Again, the most -common suggestion is a structure such as +common suggestion is a structure such as\\ \verb+struct NON_PORTABLE_COMPLEX {float r; float i;};+. If one is willing to use this structure throughout one's code, then this provides a natural and convenient mechanism. If, however, the programmer has utilized a different structure for complex, this ease of use breaks down. Then, something like the following code fragment is required: -\begin{verbatim} +\begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] NON_PORTABLE_COMPLEX ctmp; float cdot[2]; ctmp = cblas_cdotc(n, x, 1, y, 1); cdot[0] = ctmp.r; cdot[1] = ctmp.i; -\end{verbatim} -which is certainly much less convenient than: +\end{Verbatim} +which is certainly much less convenient than:\\ \verb+cblas_cdotc_sub(n, x, 1, y, 1, cdot)+. It should also be noted that the primary reason for having a function instead @@ -348,13 +355,13 @@ and column $j$, we must allocate $m$ pointers, and assign them in a section of code such as: -\begin{verbatim} +\begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] float **A, **subA; subA = malloc(m*sizeof(float*)); for (k=0; k != m; k++) subA[k] = A[i+k] + j; cblas_rout(... subA ...); -\end{verbatim} +\end{Verbatim} The same operation must be done if we wish to use a row or column as a vector. This is not only an inconvenience, but can add up to a non-negligible @@ -381,35 +388,35 @@ \noindent {\bf Example 1: making a library call with a C 2D array:} -\begin{verbatim} +\begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] double A[50][25]; /* standard C 2D array */ cblas_rout(CblasRowMajor, ... &A[i][j], 25, ...); -\end{verbatim} - +\end{Verbatim} + \noindent {\bf Example 2: Legal use of pointer to pointer style programming and the CBLAS} -\begin{verbatim} +\begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] double **A, *p; - A = malloc(M); + A = malloc(M*sizeof(double *)); p = malloc(M*N*sizeof(double)); for (i=0; i < M; i++) A[i] = &p[i*N]; cblas_rout(CblasRowMajor, ... &A[i][j], N, ...); -\end{verbatim} +\end{Verbatim} \noindent {\bf Example 3: Illegal use of pointer to pointer style programming and the CBLAS} -\begin{verbatim} +\begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] double **A, *p; - A = malloc(M); + A = malloc(M*sizeof(double *)); p = malloc(M*N*sizeof(double)); for (i=0; i < M; i++) A[i] = malloc(N*sizeof(double)); cblas_rout(CblasRowMajor, ... &A[i][j], N, ...); -\end{verbatim} +\end{Verbatim} Note that Example 3 is illegal because the rows of A have no guaranteed stride. @@ -506,7 +513,7 @@ %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{sec-cblash}, passed 9/0/1 with 16 eligible voters, 8/98.}\\ -\begin{verbatim} +\begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] #ifndef CBLAS_H #define CBLAS_H #include @@ -1072,7 +1079,7 @@ void *C, const int ldc); #endif -\end{verbatim} +\end{Verbatim} \subsection{Using Fortran 77 BLAS to support row-major BLAS operations} \label{app-ArrayStore} @@ -1541,7 +1548,7 @@ rows contain the subdiagonals. {\samepage -\begin{verbatim} +\begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] ------ Super diagonal KU ----------- Super diagonal 2 ------------ Super diagonal 1 @@ -1549,7 +1556,7 @@ ------------ Sub diagonal 1 ----------- Sub diagonal 2 ------ Sub diagonal KL -\end{verbatim} +\end{Verbatim} } If we have a row-major storage, and thus a row-oriented algorithm, we will @@ -1559,7 +1566,7 @@ to line up with the main diagonal along rows. {\samepage -\begin{verbatim} +\begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] KL D KU | | | | | | | | | @@ -1567,7 +1574,7 @@ | | | | | | | | | | | | | | | -\end{verbatim} +\end{Verbatim} } Now, let us contrast these two storage schemes. Both store @@ -1675,3 +1682,4 @@ With these ideas in mind, the analysis for the dense routines may be used unchanged for packed. \clearpage +\end{document} debian/patched-docs/cinterface.tex.flc0000644000000000000000000012175112217575344015135 0ustar (fast-lock-cache-data 3 (quote (16944 . 50367)) (quote nil) (quote nil) (quote (t ("\\\\\\(\\\\\\*\\|allowdisplaybreaks\\|clear\\(doublepage\\|page\\)\\|displaybreak\\|enlargethispage\\|linebreak\\|n\\(ew\\(line\\|page\\)\\|o\\(linebreak\\|pagebreak\\)\\)\\|pagebreak\\|[\\-]\\)" (0 font-latex-warning-face)) ("\\$\\$\\([^$]+\\)\\$\\$" (1 font-latex-math-face)) (font-latex-match-quotation (0 font-latex-string-face)) (font-latex-match-font-outside-braces (0 font-lock-keyword-face append t) (1 font-latex-italic-face append t) (2 font-latex-bold-face append t) (3 font-lock-type-face append t)) (font-latex-match-font-inside-braces (0 font-lock-keyword-face append t) (1 font-latex-italic-face append t) (2 font-latex-bold-face append t) (3 font-lock-type-face append t)) (font-latex-match-reference (0 font-lock-keyword-face append t) (1 font-lock-variable-name-face append t) (2 font-lock-reference-face append t)) (font-latex-match-function (0 font-lock-keyword-face append t) (1 font-lock-variable-name-face append t) (2 font-lock-function-name-face append t)) (font-latex-match-textual (0 font-lock-keyword-face append t) (1 font-lock-variable-name-face append t) (2 font-lock-type-face append t)) (font-latex-match-variable (0 font-lock-keyword-face nil t) (1 font-lock-variable-name-face append t) (2 font-lock-variable-name-face append t)) (font-latex-match-math-env (0 font-latex-math-face append t)) (font-latex-match-math-envII (0 font-latex-math-face append t)) ("\\\\[@A-Za-z]+" (0 font-latex-sedate-face append)))) (quote (((font-latex-warning-face font-latex-sedate-face) 85314 85324) ((font-latex-math-face font-lock-function-name-face) 83380 83387 83326 83333 83276 83283 83230 83237 83025 83032 82968 82975 82745 82752 82697 82704) ((font-latex-math-face font-lock-keyword-face font-latex-sedate-face) 83376 83380 83320 83326 83272 83276 83224 83230 83021 83025 82962 82968 82741 82745 82691 82697) ((font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face) 78358 78367) ((font-lock-comment-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 72349 72351 72014 72016) ((font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-keyword-face) 72363 72366 72272 72275 72028 72031 71937 71940) ((font-latex-warning-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 71922 71924 71869 71871 71816 71818 71689 71693 71602 71604 71547 71549 71496 71498) ((font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-keyword-face) 71708 71711 71617 71620 71386 71389) ((font-lock-comment-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 71694 71696 71372 71374) ((font-lock-comment-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 71035 71037) ((font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-keyword-face) 71295 71298 71049 71052 70958 70961) ((font-latex-warning-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 71367 71371 71280 71282 71214 71216 71163 71165 71030 71034 70943 70945 70888 70890) ((font-lock-comment-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70713 70715) ((font-latex-math-face font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70821 70826 70795 70801 70692 70697 70666 70672) ((font-latex-math-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70826 70827 70820 70821 70801 70802 70794 70795 70697 70698 70691 70692 70672 70673 70665 70666) ((font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70827 70837 70802 70820 70731 70794 70698 70708 70673 70691 70640 70665) ((font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-keyword-face) 70727 70730 70636 70639) ((font-latex-math-face font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 71351 71356 71325 71331 71147 71152 71121 71127 71014 71019 70988 70994 70611 70616 70594 70600 70583 70593 70556 70561 70543 70549 70532 70542) ((font-latex-math-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 71356 71357 71350 71351 71331 71332 71324 71325 71152 71153 71146 71147 71127 71128 71120 71121 71019 71020 71013 71014 70994 70995 70987 70988 70616 70621 70600 70611 70593 70594 70578 70583 70561 70564 70549 70556 70542 70543 70529 70532) ((font-latex-warning-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70837 70839 70708 70712 70621 70623 70564 70566 70515 70517) ((font-latex-math-face font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70499 70504 70473 70479) ((font-latex-math-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70504 70505 70498 70499 70479 70480 70472 70473) ((font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70505 70515 70480 70498 70407 70472) ((font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-keyword-face font-lock-type-face font-lock-keyword-face) 70403 70406) ((font-lock-type-face font-lock-function-name-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70377 70386) ((font-lock-type-face font-lock-keyword-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 70371 70377) ((font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 71357 71367 71332 71350 71299 71324 71153 71163 71128 71146 71053 71120 71020 71030 70995 71013 70962 70987 70839 70840 70730 70731 70715 70727 70712 70713 70639 70640 70623 70636 70566 70578 70517 70529 70406 70407 70386 70403 70370 70371) ((font-latex-warning-face font-lock-type-face) 70241 70245 70172 70174 70107 70109 70046 70048) ((font-lock-type-face font-lock-function-name-face) 70250 70259 69937 69946) ((font-lock-type-face font-lock-keyword-face font-latex-sedate-face) 70246 70250 70187 70190 69963 69966 69931 69937) ((font-latex-math-face font-lock-type-face font-latex-sedate-face) 76560 76565 76534 76540 76286 76291 76260 76266 76161 76166 76135 76141 75887 75892 75861 75867 70152 70158 70137 70143 70126 70136 70089 70095 70074 70080 70063 70073 69415 69424 69396 69405 69386 69392 69044 69050 68819 68828 68809 68815 68643 68649 68353 68362 68343 68349 68144 68150 67940 67946 67778 67784 66916 66925) ((font-latex-math-face font-lock-type-face) 76565 76566 76559 76560 76540 76541 76533 76534 76291 76292 76285 76286 76266 76267 76259 76260 76166 76167 76160 76161 76141 76142 76134 76135 75892 75893 75886 75887 75867 75868 75860 75861 70158 70171 70143 70152 70136 70137 70121 70126 70095 70106 70080 70089 70073 70074 70060 70063 69424 69428 69414 69415 69405 69409 69395 69396 69392 69393 69385 69386 69050 69051 69043 69044 68828 68832 68818 68819 68815 68816 68808 68809 68649 68650 68642 68643 68362 68366 68352 68353 68349 68350 68342 68343 68150 68151 68143 68144 67946 67947 67939 67940 67784 67785 67777 67778 66925 66929 66915 66916) ((font-lock-comment-face font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face) 66050 66055 66023 66029 65975 65978) ((font-lock-comment-face font-lock-type-face font-lock-type-face font-latex-sedate-face) 66179 66184 66152 66158 66133 66136 66109 66114 66096 66102 66085 66095 65326 65331 65299 65305 65280 65283 65256 65261 65243 65249 65232 65242 65197 65202 65170 65176 65122 65125) ((font-lock-comment-face font-lock-type-face font-lock-type-face) 73021 73023 66184 66199 66158 66179 66136 66152 66114 66133 66102 66109 66095 66096 66070 66085 65331 65346 65305 65326 65283 65299 65261 65280 65249 65256 65242 65243 65202 65232 65176 65197 65125 65170 65107 65122) ((font-latex-math-face font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 74228 74233 74210 74216 72461 72466 72435 72441 72328 72333 72302 72308 72124 72129 72098 72104 71993 71998 71967 71973 71912 71917 71899 71905 71888 71898 71861 71866 71844 71850 71833 71843 71592 71597 71577 71583 71566 71576 71539 71544 71524 71530 71513 71523 69657 69663 65564 65569 65537 65543 64897 64902 64870 64876) ((font-latex-math-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 74233 74234 74227 74228 74216 74217 74209 74210 72466 72467 72460 72461 72441 72442 72434 72435 72333 72334 72327 72328 72308 72309 72301 72302 72129 72130 72123 72124 72104 72105 72097 72098 71998 71999 71992 71993 71973 71974 71966 71967 71917 71922 71905 71912 71898 71899 71883 71888 71866 71869 71850 71861 71843 71844 71830 71833 71597 71602 71583 71592 71576 71577 71561 71566 71544 71547 71530 71539 71523 71524 71510 71513 69663 69664 69656 69657 65569 65570 65563 65564 65543 65544 65536 65537 64902 64903 64896 64897 64876 64877 64869 64870) ((font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 74234 74244 74217 74227 74149 74209 72467 72477 72442 72460 72367 72434 72334 72344 72309 72327 72276 72301 72130 72140 72105 72123 72032 72097 71999 72009 71974 71992 71941 71966 71924 71925 71871 71883 71818 71830 71711 71712 71696 71708 71693 71694 71620 71621 71604 71617 71549 71561 71498 71510 71389 71390 71374 71386 69664 69683 69614 69656 65570 65581 65544 65563 65493 65536 64903 64914 64877 64896 64826 64869) ((font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-keyword-face font-lock-type-face font-lock-keyword-face) 74145 74148 69610 69613 65489 65492 64822 64825) ((font-lock-type-face font-lock-function-name-face font-lock-type-face font-lock-type-face) 74119 74128 69584 69593 64796 64805) ((font-lock-type-face font-lock-keyword-face font-latex-sedate-face font-lock-type-face font-lock-type-face) 74113 74119 69578 69584 64790 64796) ((font-lock-type-face font-lock-type-face font-lock-function-name-face) 79265 79274 77982 77991 75712 75721 74749 74758 74071 74080 73375 73384 69847 69856 66203 66212 65350 65359 64199 64208) ((font-latex-math-face font-lock-type-face font-lock-type-face font-lock-type-face font-latex-sedate-face) 79231 79237 74724 74729 74698 74704 73350 73355 73324 73330 73135 73140 73109 73115 69812 69818 65085 65090 65058 65064 64169 64178 64159 64164 64149 64158 64130 64139 64111 64117 64101 64110) ((font-lock-type-face font-lock-type-face font-lock-keyword-face font-latex-sedate-face) 79261 79265 79193 79196 77978 77982 75708 75712 74745 74749 74671 74674 74067 74071 73371 73375 73294 73297 73035 73038 69843 69847 69794 69797 66199 66203 65346 65350 65039 65042 64195 64199 64079 64082) ((font-lock-type-face font-lock-type-face) 79274 79276 79260 79261 79196 79197 79180 79193 79126 79138 79086 79097 77991 77993 75721 75723 74758 74760 74744 74745 74674 74675 74658 74671 74604 74615 74080 74082 73384 73386 73370 73371 73297 73298 73281 73294 73206 73218 73153 73165 73038 73039 73023 73035 70213 70241 70191 70205 70018 70046 69967 70010 69856 69858 69842 69843 69797 69798 69782 69794 66212 66214 65359 65361 65106 65107 65042 65043 65026 65039 64208 64210 64194 64195 64082 64083 64066 64079) ((font-latex-warning-face font-lock-type-face font-lock-type-face) 79256 79260 79178 79180 79124 79126 74740 74744 74656 74658 73366 73370 73279 73281 73204 73206 73151 73153 69838 69842 65102 65106 65024 65026 64190 64194 64064 64066) ((font-latex-math-face font-lock-type-face font-lock-type-face font-latex-sedate-face) 79165 79174 79154 79160 79143 79153 79111 79117 79100 79110 74646 74651 74631 74637 74620 74630 73269 73274 73254 73263 73241 73250 73234 73240 73223 73233 73196 73201 73179 73185 73168 73178 70206 70212 70011 70017 65016 65021 65001 65007 64990 65000 64049 64058 64042 64047 64032 64041 64004 64013 63992 63998 63982 63991 63971 63981 63958 63967 63947 63956) ((font-latex-math-face font-lock-type-face font-lock-type-face) 79174 79178 79160 79165 79153 79154 79138 79143 79117 79124 79110 79111 79097 79100 74651 74656 74637 74646 74630 74631 74615 74620 73274 73279 73263 73269 73250 73254 73240 73241 73233 73234 73218 73223 73201 73204 73185 73196 73178 73179 73165 73168 70212 70213 70205 70206 70017 70018 70010 70011 65021 65024 65007 65016 65000 65001 64976 64990 64058 64064 64047 64049 64041 64042 64013 64032 63998 64004 63991 63992 63981 63982 63967 63971 63956 63958 63936 63947) ((font-lock-comment-face font-lock-type-face font-lock-type-face font-lock-type-face) 78960 78962 78674 78676 77487 77489 75387 75389 74439 74441 73753 73755 72686 72688 66055 66070 66029 66050 65978 66023 65960 65975 63759 63761 63513 63515) ((font-latex-math-face font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face) 79058 79064 78930 78936 78768 78774 78644 78650 77957 77962 77930 77936 77920 77929 77595 77600 77569 77575 77466 77471 77439 77445 77429 77438 77376 77381 77357 77366 77350 77356 77331 77340 77323 77329 77313 77322 77290 77295 77271 77280 77263 77269 77253 77262 77234 77243 77227 77233 77216 77226 77189 77194 77173 77179 77163 77172 77148 77154 77137 77147 75687 75692 75661 75667 75486 75491 75468 75474 75366 75371 75340 75346 74534 74539 74516 74522 74418 74423 74392 74398 74046 74051 74020 74026 73856 73861 73830 73836 73732 73737 73706 73712 73000 73005 72974 72980 72796 72801 72770 72776 72665 72670 72639 72645 72247 72252 72230 72239 72223 72229 72212 72222 72185 72190 72168 72174 72157 72167 65934 65943 65924 65929 65914 65923 65892 65901 65873 65879 65863 65872 63855 63860 63828 63834 63737 63742 63710 63716 63605 63610 63578 63584 63491 63496 63464 63470) ((font-latex-math-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 79064 79065 79057 79058 78936 78937 78929 78930 78774 78775 78767 78768 78650 78651 78643 78644 77962 77963 77956 77957 77936 77938 77929 77930 77919 77920 77600 77601 77594 77595 77575 77576 77568 77569 77471 77472 77465 77466 77445 77447 77438 77439 77428 77429 77381 77386 77366 77376 77356 77357 77340 77350 77329 77331 77322 77323 77295 77313 77280 77290 77269 77271 77262 77263 77243 77253 77233 77234 77226 77227 77211 77216 77194 77197 77179 77189 77172 77173 77154 77163 77147 77148 77134 77137 75692 75693 75686 75687 75667 75668 75660 75661 75491 75492 75485 75486 75474 75475 75467 75468 75371 75372 75365 75366 75346 75347 75339 75340 74539 74540 74533 74534 74522 74523 74515 74516 74423 74424 74417 74418 74398 74399 74391 74392 74051 74052 74045 74046 74026 74027 74019 74020 73861 73862 73855 73856 73836 73837 73829 73830 73737 73738 73731 73732 73712 73713 73705 73706 73005 73006 72999 73000 72980 72981 72973 72974 72801 72802 72795 72796 72776 72777 72769 72770 72670 72671 72664 72665 72645 72646 72638 72639 72252 72257 72239 72247 72229 72230 72222 72223 72207 72212 72190 72193 72174 72185 72167 72168 72154 72157 65943 65947 65933 65934 65929 65931 65923 65924 65913 65914 65901 65905 65891 65892 65879 65881 65872 65873 65862 65863 63860 63861 63854 63855 63834 63835 63827 63828 63742 63743 63736 63737 63716 63717 63709 63710 63610 63611 63604 63605 63584 63585 63577 63578 63496 63497 63490 63491 63470 63471 63463 63464) ((font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-keyword-face) 78974 78977 78892 78895 78688 78691 78606 78609 77892 77895 77501 77504 77401 77404 75634 75637 75401 75404 75313 75316 74453 74456 74365 74368 73993 73996 73767 73770 73679 73682 72944 72947 72700 72703 72609 72612 65844 65847 63773 63776 63688 63691 63527 63530 63442 63445) ((font-latex-warning-face font-lock-type-face font-lock-type-face font-lock-type-face) 79083 79085 78955 78959 78877 78879 78834 78836 78793 78795 78669 78673 78591 78593 78546 78548 77973 77977 77877 77879 77688 77690 77611 77613 77482 77486 75703 75707 75619 75621 75553 75555 75502 75504 75382 75386 75298 75300 75232 75234 74601 74603 74550 74552 74434 74438 74350 74352 74295 74297 74244 74246 74062 74066 73978 73980 73921 73923 73872 73874 73748 73752 73664 73666 73607 73609 73016 73020 72929 72931 72865 72867 72812 72814 72681 72685 72594 72596 72528 72530 69779 69781 69729 69731 69683 69685 65955 65959 65829 65831 65581 65583 64914 64916 63872 63874 63754 63758 63673 63675 63622 63624 63508 63512 63427 63429) ((font-latex-math-face font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face) 78864 78870 78853 78863 78821 78827 78810 78820 78576 78582 78565 78575 78535 78541 78524 78534 77867 77872 77852 77861 77841 77847 77826 77835 77814 77820 77804 77813 77781 77786 77766 77775 77754 77760 77744 77753 77729 77738 77718 77724 77707 77717 77680 77685 77664 77670 77654 77663 77639 77645 77628 77638 75609 75614 75594 75603 75583 75589 75572 75582 75545 75550 75530 75536 75519 75529 75288 75293 75269 75278 75262 75268 75251 75261 75224 75229 75209 75215 75198 75208 74593 74598 74578 74584 74567 74577 74340 74345 74325 74331 74314 74324 74287 74292 74272 74278 74261 74271 73968 73973 73951 73957 73940 73950 73913 73918 73900 73906 73889 73899 73654 73659 73637 73643 73626 73636 73599 73604 73586 73592 73575 73585 72919 72924 72904 72913 72895 72901 72884 72894 72857 72862 72840 72846 72829 72839 72584 72589 72569 72578 72558 72564 72547 72557 72520 72525 72505 72511 72494 72504 69759 69765 69748 69758 69711 69717 69700 69710 65814 65823 65807 65812 65797 65806 65771 65780 65759 65765 65749 65758 65738 65748 65725 65734 65714 65723 65690 65701 65682 65687 65667 65673 65656 65666 65630 65641 65622 65627 65609 65615 65598 65608 64963 64974 64955 64960 64942 64948 64931 64941 63923 63934 63915 63920 63900 63906 63889 63899 63665 63670 63650 63656 63639 63649 63419 63424 63406 63412 63395 63405) ((font-latex-math-face font-lock-type-face font-lock-type-face font-lock-type-face) 79237 79238 79230 79231 78870 78877 78863 78864 78848 78853 78827 78834 78820 78821 78807 78810 78582 78591 78575 78576 78560 78565 78541 78546 78534 78535 78521 78524 77872 77877 77861 77867 77847 77852 77835 77841 77820 77826 77813 77814 77786 77804 77775 77781 77760 77766 77753 77754 77738 77744 77724 77729 77717 77718 77702 77707 77685 77688 77670 77680 77663 77664 77645 77654 77638 77639 77625 77628 75614 75619 75603 75609 75589 75594 75582 75583 75567 75572 75550 75553 75536 75545 75529 75530 75516 75519 75293 75298 75278 75288 75268 75269 75261 75262 75246 75251 75229 75232 75215 75224 75208 75209 75195 75198 74729 74730 74723 74724 74704 74705 74697 74698 74598 74601 74584 74593 74577 74578 74564 74567 74345 74350 74331 74340 74324 74325 74309 74314 74292 74295 74278 74287 74271 74272 74258 74261 73973 73978 73957 73968 73950 73951 73935 73940 73918 73921 73906 73913 73899 73900 73886 73889 73659 73664 73643 73654 73636 73637 73621 73626 73604 73607 73592 73599 73585 73586 73572 73575 73355 73356 73349 73350 73330 73331 73323 73324 73140 73141 73134 73135 73115 73116 73108 73109 72924 72929 72913 72919 72901 72904 72894 72895 72879 72884 72862 72865 72846 72857 72839 72840 72826 72829 72589 72594 72578 72584 72564 72569 72557 72558 72542 72547 72525 72528 72511 72520 72504 72505 72491 72494 69818 69819 69811 69812 69765 69778 69758 69759 69743 69748 69717 69728 69710 69711 69697 69700 65823 65829 65812 65814 65806 65807 65780 65797 65765 65771 65758 65759 65748 65749 65734 65738 65723 65725 65701 65714 65687 65690 65673 65682 65666 65667 65641 65656 65627 65630 65615 65622 65608 65609 65595 65598 65090 65091 65084 65085 65064 65065 65057 65058 64974 64976 64960 64963 64948 64955 64941 64942 64928 64931 64178 64182 64168 64169 64164 64166 64158 64159 64148 64149 64139 64143 64129 64130 64117 64119 64110 64111 64100 64101 63934 63936 63920 63923 63906 63915 63899 63900 63886 63889 63670 63673 63656 63665 63649 63650 63636 63639 63424 63427 63412 63419 63405 63406 63392 63395) ((font-lock-type-face font-lock-type-face font-lock-type-face) 79238 79256 79197 79230 79085 79086 78977 78978 78962 78974 78959 78960 78895 78896 78879 78892 78836 78848 78795 78807 78691 78692 78676 78688 78673 78674 78609 78610 78593 78606 78548 78560 78510 78521 77977 77978 77895 77896 77879 77892 77690 77702 77613 77625 77504 77505 77489 77501 77486 77487 77404 77405 77389 77401 75707 75708 75637 75638 75621 75634 75555 75567 75504 75516 75404 75405 75389 75401 75386 75387 75316 75317 75300 75313 75234 75246 75184 75195 74730 74740 74705 74723 74675 74697 74603 74604 74552 74564 74456 74457 74441 74453 74438 74439 74368 74369 74352 74365 74297 74309 74246 74258 74148 74149 74128 74145 74112 74113 74066 74067 73996 73997 73980 73993 73923 73935 73874 73886 73770 73771 73755 73767 73752 73753 73682 73683 73666 73679 73609 73621 73561 73572 73356 73366 73331 73349 73298 73323 73141 73151 73116 73134 73039 73108 73020 73021 72947 72948 72931 72944 72867 72879 72814 72826 72703 72704 72688 72700 72685 72686 72612 72613 72596 72609 72530 72542 72480 72491 69819 69838 69798 69811 69781 69782 69778 69779 69731 69743 69728 69729 69685 69697 69613 69614 69593 69610 69577 69578 65959 65960 65847 65848 65831 65844 65583 65595 65492 65493 65477 65489 65091 65102 65065 65084 65043 65057 64916 64928 64825 64826 64805 64822 64789 64790 64182 64190 64166 64168 64143 64148 64119 64129 64083 64100 63874 63886 63776 63777 63761 63773 63758 63759 63691 63692 63675 63688 63624 63636 63530 63531 63515 63527 63512 63513 63445 63446 63429 63442 63381 63392) ((font-latex-warning-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 78507 78509 77386 77388 77197 77199 77120 77122 75181 75183 73558 73560 72477 72479 72344 72348 72257 72259 72193 72195 72140 72142 72009 72013 63378 63380) ((font-latex-math-face font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 78482 78488 77104 77109 77078 77084 75165 75170 75147 75153 73542 73547 73516 73522 71800 71805 71774 71780 71673 71678 71647 71653 71480 71485 71454 71460 71270 71275 71251 71260 71244 71250 71233 71243 71206 71211 71191 71197 71180 71190 70933 70938 70918 70924 70907 70917 70880 70885 70865 70871 70854 70864 63361 63366 63334 63340) ((font-latex-math-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 78488 78489 78481 78482 77109 77110 77103 77104 77084 77085 77077 77078 75170 75171 75164 75165 75153 75154 75146 75147 73547 73548 73541 73542 73522 73523 73515 73516 71805 71806 71799 71800 71780 71781 71773 71774 71678 71679 71672 71673 71653 71654 71646 71647 71485 71486 71479 71480 71460 71461 71453 71454 71275 71280 71260 71270 71250 71251 71243 71244 71228 71233 71211 71214 71197 71206 71190 71191 71177 71180 70938 70943 70924 70933 70917 70918 70902 70907 70885 70888 70871 70880 70864 70865 70851 70854 63366 63367 63360 63361 63340 63341 63333 63334) ((font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 78489 78507 78404 78481 77110 77120 77085 77103 77016 77077 75171 75181 75154 75164 75086 75146 73548 73558 73523 73541 73458 73515 71806 71816 71781 71799 71712 71773 71679 71689 71654 71672 71621 71646 71486 71496 71461 71479 71390 71453 71371 71372 71298 71299 71282 71295 71216 71228 71165 71177 71052 71053 71037 71049 71034 71035 70961 70962 70945 70958 70890 70902 70840 70851 63367 63378 63341 63360 63285 63333) ((font-lock-type-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-keyword-face font-lock-type-face font-lock-keyword-face) 78400 78403 77012 77015 75082 75085 73454 73457 63281 63284) ((font-lock-type-face font-lock-function-name-face font-lock-type-face font-lock-type-face font-lock-type-face) 78374 78383 76986 76995 75056 75065 73428 73437 65463 65472 63255 63264) ((font-lock-type-face font-lock-keyword-face font-latex-sedate-face font-lock-type-face font-lock-type-face font-lock-type-face) 78368 78374 76980 76986 75050 75056 73422 73428 65457 65463 63249 63255) ((font-lock-type-face font-lock-type-face font-lock-type-face font-lock-type-face) 79065 79083 78978 79057 78937 78955 78896 78929 78775 78793 78692 78767 78651 78669 78610 78643 78509 78510 78403 78404 78383 78400 78367 78368 78357 78358 77963 77973 77938 77956 77896 77919 77601 77611 77576 77594 77505 77568 77472 77482 77447 77465 77405 77428 77388 77389 77199 77211 77122 77134 77015 77016 76995 77012 76979 76980 75693 75703 75668 75686 75638 75660 75492 75502 75475 75485 75405 75467 75372 75382 75347 75365 75317 75339 75183 75184 75085 75086 75065 75082 75049 75050 74540 74550 74523 74533 74457 74515 74424 74434 74399 74417 74369 74391 74052 74062 74027 74045 73997 74019 73862 73872 73837 73855 73771 73829 73738 73748 73713 73731 73683 73705 73560 73561 73457 73458 73437 73454 73421 73422 73006 73016 72981 72999 72948 72973 72802 72812 72777 72795 72704 72769 72671 72681 72646 72664 72613 72638 72479 72480 72366 72367 72351 72363 72348 72349 72275 72276 72259 72272 72195 72207 72142 72154 72031 72032 72016 72028 72013 72014 71940 71941 71925 71937 65947 65955 65931 65933 65905 65913 65881 65891 65848 65862 65472 65477 65456 65457 63861 63872 63835 63854 63777 63827 63743 63754 63717 63736 63692 63709 63611 63622 63585 63604 63531 63577 63497 63508 63471 63490 63446 63463 63380 63381 63284 63285 63264 63281 63248 63249) ((font-lock-keyword-face font-latex-sedate-face font-lock-keyword-face font-lock-keyword-face font-lock-keyword-face) 78344 78357 76966 76979 75043 75049 73415 73421 65450 65456 63242 63248) ((font-latex-italic-face font-lock-type-face) 24709 24727 24647 24671 24593 24609 24444 24475 24248 24283 24173 24189 24040 24060) ((font-lock-keyword-face font-lock-type-face font-latex-sedate-face) 24705 24708 24643 24646 24589 24592 24440 24443 24244 24247 24169 24172 24036 24039) ((font-lock-keyword-face) 24703 24704 24641 24642 24587 24588 24438 24439 24242 24243 24167 24168 24034 24035 23778 23779 23684 23685) ((font-latex-bold-face) 22180 22207 20117 20194 19765 19840 19518 19570) ((font-latex-italic-face font-lock-constant-face) 16330 16346) ((font-lock-string-face font-latex-italic-face font-latex-italic-face font-latex-italic-face) 15491 15503) ((font-lock-keyword-face font-latex-sedate-face font-lock-keyword-face font-lock-keyword-face) 74106 74112 69571 69577 64783 64789 15059 15062) ((font-latex-italic-face font-latex-italic-face font-lock-function-name-face) 13156 13167) ((font-latex-italic-face font-latex-italic-face font-lock-keyword-face font-latex-sedate-face) 13152 13156) ((font-latex-italic-face font-latex-italic-face) 15532 16048 13167 13169 12804 13152) ((font-latex-italic-face font-latex-sedate-face font-latex-italic-face font-latex-italic-face) 12527 12532) ((font-latex-warning-face font-latex-italic-face font-latex-italic-face font-latex-italic-face) 12524 12526) ((font-latex-italic-face font-latex-sedate-face font-latex-italic-face font-lock-type-face font-latex-italic-face font-lock-type-face) 12300 12306) ((font-latex-italic-face font-latex-italic-face font-latex-italic-face) 15503 15532 15080 15491 15062 15063 12532 12804 12526 12527 12478 12524 12306 12464 12290 12300) ((font-latex-italic-face font-lock-function-name-face font-latex-italic-face font-latex-italic-face) 15069 15080 12468 12478 12280 12290) ((font-latex-italic-face font-lock-keyword-face font-latex-sedate-face font-latex-italic-face font-latex-italic-face) 15063 15069 12464 12468 12274 12280) ((font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face) 12137 12274) ((font-latex-italic-face font-latex-sedate-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face) 11928 11933) ((font-latex-warning-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face) 11925 11927) ((font-latex-italic-face font-lock-function-name-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face) 11797 11808) ((font-latex-italic-face font-lock-keyword-face font-latex-sedate-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face) 11791 11797) ((font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face font-latex-italic-face) 11933 12137 11927 11928 11808 11925 11790 11791) ((font-lock-keyword-face font-latex-sedate-face font-lock-keyword-face font-lock-keyword-face font-lock-keyword-face font-lock-keyword-face font-lock-keyword-face font-lock-keyword-face) 70357 70370 11787 11790) (font-latex-warning-face 76576 76580 76491 76493 76368 76370 76302 76304 76177 76181 76092 76094 75969 75971 75903 75905 69441 69445 69352 69354 69142 69144 69079 69081 68845 68849 68776 68778 68715 68717 68669 68671 68391 68395 68311 68313 68225 68227 68179 68181 67975 67979 67908 67910 67859 67861 67813 67815 66937 66941 66863 66865 66772 66774 66667 66671 66606 66608 66572 66574 66471 66475 66410 66412 66378 66380 22207 22209 14362 14364 14293 14295 9067 9069) ((font-latex-warning-face font-latex-italic-face) 8631 8633) ((font-lock-type-face font-latex-sedate-face) 81032 81038 80388 80394 75749 75762 68957 68963 68557 68563 68066 68072 67690 67696 66255 66261 25108 25114 20221 20227 19867 19873 19597 19603 18069 18075 5393 5399) ((font-latex-math-face font-latex-sedate-face) 83388 83394 83312 83317 83294 83305 83284 83290 83216 83221 83033 83039 82954 82959 82753 82759 82683 82688 76481 76486 76466 76472 76451 76457 76428 76433 76413 76419 76398 76404 76387 76397 76360 76365 76345 76351 76330 76336 76319 76329 76082 76087 76067 76073 76052 76058 76029 76034 76014 76020 75999 76005 75988 75998 75961 75966 75946 75952 75931 75937 75920 75930 69329 69338 69322 69328 69308 69317 69290 69299 69276 69285 69269 69275 69216 69225 69208 69214 69198 69207 69179 69188 69172 69178 69161 69171 69125 69131 69107 69113 69096 69106 68752 68761 68745 68751 68734 68744 68697 68703 68686 68696 68287 68296 68280 68286 68255 68261 68244 68254 68207 68213 68196 68206 67889 67895 67878 67888 67841 67847 67830 67840 66848 66857 66829 66838 66818 66827 66806 66817 66789 66799 66589 66599 66395 66405 64549 64558 64445 64454 64411 64420 63148 63157 61339 61345 61324 61334 60877 60883 60864 60874 60822 60828 60809 60819 17879 17885 3852 3856 3550 3554 3543 3547) (font-latex-math-face 84723 84732 84358 84363 84302 84305 83779 83784 83769 83774 83453 83458 83429 83434 83394 83397 83387 83388 83333 83376 83317 83320 83305 83312 83290 83294 83283 83284 83237 83272 83221 83224 83209 83216 83039 83044 83032 83033 82975 83021 82959 82962 82946 82954 82892 82901 82881 82890 82759 82765 82752 82753 82704 82741 82688 82691 82677 82683 82586 82591 82576 82581 82562 82565 82554 82557 82368 82373 82204 82209 80889 80894 80313 80318 80163 80168 76937 76940 76929 76932 76849 76852 76753 76756 76735 76740 76486 76491 76472 76481 76457 76466 76433 76451 76419 76428 76404 76413 76397 76398 76382 76387 76365 76368 76351 76360 76336 76345 76329 76330 76316 76319 76087 76092 76073 76082 76058 76067 76034 76052 76020 76029 76005 76014 75998 75999 75983 75988 75966 75969 75952 75961 75937 75946 75930 75931 75917 75920 75015 75018 74945 74948 74870 74873 69544 69547 69536 69539 69474 69478 69338 69351 69328 69329 69317 69322 69299 69308 69285 69290 69275 69276 69225 69269 69214 69216 69207 69208 69188 69198 69178 69179 69171 69172 69156 69161 69131 69141 69113 69125 69106 69107 69093 69096 68911 68914 68885 68888 68761 68775 68751 68752 68744 68745 68729 68734 68703 68714 68696 68697 68683 68686 68488 68491 68443 68446 68296 68310 68286 68287 68261 68280 68254 68255 68239 68244 68213 68224 68206 68207 68193 68196 67895 67907 67888 67889 67873 67878 67847 67858 67840 67841 67827 67830 67230 67234 67073 67076 66857 66863 66838 66848 66827 66829 66817 66818 66799 66806 66786 66789 66599 66606 66586 66589 66405 66410 66392 66395 65429 65432 65406 65410 64684 64690 64652 64655 64558 64562 64544 64549 64454 64458 64440 64445 64420 64424 64410 64411 64341 64344 63168 63177 63157 63161 63147 63148 62002 62006 61969 61972 61345 61350 61334 61339 61319 61324 61148 61153 61128 61131 60883 60886 60874 60877 60861 60864 60828 60831 60819 60822 60806 60809 59534 59537 59367 59370 17982 17985 17960 17963 17945 17948 17885 17888 17876 17879 16861 16865 16838 16841 4417 4422 3856 3863 3849 3852 3628 3631 3565 3568 3554 3557 3547 3550 3540 3543) ((font-latex-italic-face font-latex-sedate-face) 22210 22213 8635 8638 6329 6332 6190 6193 6156 6159 5909 5912 5893 5896 2499 2502 2485 2488) ((font-latex-italic-face font-lock-function-name-face) 8517 8528 5793 5804 2408 2419) ((font-latex-italic-face font-lock-keyword-face font-latex-sedate-face) 16326 16330 8511 8517 5787 5793 2402 2408) ((font-latex-italic-face) 60613 60623 16346 16568 16048 16326 8638 8994 8633 8635 8528 8631 8510 8511 6332 6346 6193 6329 6159 6190 5912 6156 5896 5909 5804 5893 5786 5787 2502 2571 2488 2499 2419 2485 2401 2402 1067 1078 1013 1032 847 866) (font-lock-string-face 11662 11677 11461 11476 688 696) ((font-lock-comment-face font-latex-sedate-face) 57704 57708 57652 57655 57637 57650 25016 25020 24964 24967 24949 24962 23590 23594 23538 23541 23523 23536 23198 23201 23193 23196 22970 22974 22887 22891 22805 22809 22723 22727 22671 22674 22656 22669 21772 21776 21692 21696 21611 21615 21559 21562 21544 21557 20894 20898 20817 20821 20706 20710 20654 20657 20639 20652 13552 13556 13467 13471 13384 13388 13301 13305 13249 13252 13234 13247 10863 10867 10779 10783 10697 10701 10615 10619 10563 10566 10548 10561 7431 7435 7345 7349 7261 7265 7177 7181 7125 7128 7110 7123 4809 4813 4735 4739 4663 4667 4591 4595 4539 4542 4524 4537 3425 3429 3312 3316 3242 3246 3171 3175 3100 3104 3048 3051 3033 3046 2094 2098 2011 2015 1930 1934 1849 1853 1797 1800 1782 1795 515 519 445 449 377 381 309 313 257 260 242 255) ((font-lock-constant-face) 79315 79328 57617 57633 24933 24945 24143 24157 23503 23519 22628 22652 22112 22124 21518 21540 20616 20635 13205 13230 10520 10544 7080 7106 4506 4520 3016 3029 1755 1778 228 238) ((font-lock-type-face) 85178 85184 85163 85168 84559 84564 83801 83818 79292 79309 78290 78296 78253 78258 78093 78100 78077 78082 78065 78070 78009 78020 76957 76964 76888 76894 76800 76805 76566 76576 76541 76559 76510 76533 76292 76302 76267 76285 76200 76259 76167 76177 76142 76160 76111 76134 75893 75903 75868 75886 75799 75860 75739 75746 75035 75041 74956 74966 74899 74904 74098 74104 73402 73413 70349 70355 70319 70333 70259 70261 70245 70246 70190 70191 70174 70187 70171 70172 70109 70121 70106 70107 70048 70060 69966 69967 69946 69963 69930 69931 69916 69922 69564 69569 69428 69441 69409 69414 69393 69395 69371 69385 69051 69079 69000 69043 68948 68954 68832 68845 68816 68818 68795 68808 68650 68669 68600 68642 68549 68554 68527 68532 68511 68516 68366 68391 68350 68352 68330 68342 68151 68179 68109 68143 68057 68063 67947 67975 67927 67939 67785 67813 67743 67777 67531 67541 67323 67329 66929 66937 66882 66915 66690 66772 66625 66667 66494 66572 66429 66471 66298 66378 66230 66241 65377 65383 64725 64731 63223 63229 63194 63208 63024 63041 62991 63010 62101 62107 61442 61447 60160 60166 60125 60130 59896 59902 59838 59843 57550 57610 24904 24926 24870 24876 24708 24709 24704 24705 24646 24647 24642 24643 24592 24593 24588 24589 24443 24444 24439 24440 24247 24248 24243 24244 24217 24223 24172 24173 24168 24169 24039 24040 24035 24036 23897 23910 23760 23768 23439 23496 22606 22622 22524 22528 22499 22507 22163 22171 21924 21932 21486 21512 21146 21166 21047 21053 20587 20610 17599 17601 17558 17560 15037 15057 14920 14933 14861 14868 14735 14749 14668 14672 14586 14593 14398 14412 14301 14361 13182 13199 11765 11785 11265 11271 10478 10514 9075 9122 8485 8505 7683 7690 7668 7674 7555 7562 7042 7074 5761 5781 5303 5309 5197 5202 5176 5186 5164 5169 5152 5157 4478 4499 4430 4438 4308 4316 4180 4188 4134 4147 4007 4020 3952 3960 2988 3009 2875 2877 2674 2679 2376 2396 2346 2359 2326 2332 2287 2295 1734 1749 1715 1719 190 222) (font-lock-comment-face 76182 76184 66672 66674 66476 66478 57708 57773 57655 57704 57650 57652 57635 57637 25020 25081 24967 25016 24962 24964 24947 24949 23594 23659 23541 23590 23536 23538 23521 23523 23201 23427 23196 23198 23191 23193 22974 23047 22891 22970 22809 22887 22727 22805 22674 22723 22669 22671 22654 22656 21776 21847 21696 21772 21615 21692 21562 21611 21557 21559 21542 21544 20898 20966 20821 20894 20710 20817 20657 20706 20652 20654 20637 20639 16972 17056 13747 14121 13556 13631 13471 13552 13388 13467 13305 13384 13252 13301 13247 13249 13232 13234 10867 10941 10783 10863 10701 10779 10619 10697 10566 10615 10561 10563 10546 10548 7435 7511 7349 7431 7265 7345 7181 7261 7128 7177 7123 7125 7108 7110 4813 4877 4739 4809 4667 4735 4595 4663 4542 4591 4537 4539 4522 4524 3429 3491 3316 3425 3246 3312 3175 3242 3104 3171 3051 3100 3046 3048 3031 3033 2098 2171 2015 2094 1934 2011 1853 1930 1800 1849 1795 1797 1780 1782 519 579 449 515 381 445 313 377 260 309 255 257 240 242 127 181 105 126) ((font-latex-sedate-face) 80996 81005 80352 80361 67697 67706 66243 66252 63231 63240 24419 24424 20102 20111 19750 19759 19503 19512 19464 19469 18638 18643 9541 9546 9526 9531 47 57 25 39) ((font-lock-function-name-face) 85329 85339 81170 81180 81012 81022 80648 80658 80368 80378 76585 76594 75769 75778 69450 69459 68970 68979 68854 68863 68570 68579 68400 68409 68079 68088 67984 67993 67713 67722 66946 66955 66268 66277 57527 57537 25088 25098 24882 24891 23666 23675 20561 20572 20461 20471 20201 20211 20090 20100 19847 19857 19738 19748 19577 19587 18244 18254 18049 18059 10452 10463 7016 7027 5735 5745 5373 5383 2962 2973 93 103 75 85 15 24) ((font-lock-keyword-face font-latex-sedate-face) 85325 85329 85174 85177 85159 85162 84555 84558 83787 83801 81166 81170 81006 81012 80644 80648 80362 80368 79309 79315 79278 79292 78286 78289 78249 78252 78089 78092 78073 78076 78061 78064 77995 78009 76943 76957 76884 76887 76796 76799 76581 76585 76506 76509 76196 76199 76107 76110 75795 75798 75763 75769 75725 75739 75021 75035 74952 74955 74895 74898 74084 74098 73388 73402 70335 70349 70305 70319 69924 69930 69902 69916 69550 69564 69446 69450 69367 69370 68996 68999 68964 68970 68934 68948 68850 68854 68791 68794 68596 68599 68564 68570 68535 68549 68523 68526 68507 68510 68396 68400 68326 68329 68105 68108 68073 68079 68043 68057 67980 67984 67923 67926 67739 67742 67707 67713 67517 67531 67319 67322 66942 66946 66878 66881 66686 66689 66621 66624 66490 66493 66425 66428 66294 66297 66262 66268 66216 66230 65363 65377 64711 64725 63209 63223 63180 63194 63020 63023 62987 62990 62097 62100 61438 61441 60609 60612 60156 60159 60121 60124 59892 59895 59834 59837 57611 57617 57539 57550 57523 57527 25082 25088 24927 24933 24893 24904 24878 24882 24866 24869 24698 24703 24636 24641 24582 24587 24433 24438 24237 24242 24213 24216 24162 24167 24139 24143 24029 24034 23893 23896 23773 23778 23756 23759 23679 23684 23660 23666 23497 23503 23428 23439 22622 22628 22595 22606 22520 22523 22495 22498 22176 22179 22159 22162 22108 22112 21920 21923 21512 21518 21475 21486 21132 21146 21043 21046 20610 20616 20576 20587 20557 20561 20457 20461 20195 20201 20113 20116 20086 20090 19841 19847 19761 19764 19734 19738 19571 19577 19514 19517 18240 18244 18043 18049 17595 17598 17554 17557 15023 15037 14916 14919 14857 14860 14731 14734 14664 14667 14582 14585 14394 14397 14297 14300 13199 13205 13171 13182 11751 11765 11261 11264 10514 10520 10467 10478 10448 10452 9071 9074 8507 8510 8471 8485 7679 7682 7664 7667 7551 7554 7074 7080 7031 7042 7012 7016 5783 5786 5747 5761 5731 5735 5367 5373 5299 5302 5193 5196 5172 5175 5160 5163 5148 5151 4500 4506 4467 4478 4426 4429 4304 4307 4176 4179 4130 4133 4003 4006 3948 3951 3010 3016 2977 2988 2958 2962 2871 2874 2670 2673 2398 2401 2362 2376 2342 2345 2322 2325 2283 2286 1749 1755 1723 1734 1711 1714 1063 1066 1009 1012 843 846 222 228 182 190 87 93 64 75 1 15)))) debian/patched-docs/cinterface.tex0000644000000000000000000024653312217575344014400 0ustar \documentclass{article} \oddsidemargin 0.25in \textwidth 6.0in \usepackage{fancyvrb} \begin{document} % % cinterface.tex % %% Chapter Authors: Clint, Sven, Zohair, Linda, Susan \section{C interface to the Legacy BLAS}\label{legacy:c} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{legacy:c}, passed 9/0/0, 8/97.\\ %Second vote taken on section~\ref{legacy:c}, passed 8/0/0, 12/97.\\ %Third vote taken on section~\ref{legacy:c}, passed 13/0/0, 4/98. \\ %Fourth vote taken on section~\ref{legacy:c}, passed 8/0/1 with 16 eligible voters, 8/98.} \\ This section gives a detailed discussion of the proposed C interface to the legacy BLAS. Every mention of ``BLAS'' in this chapter should be taken to mean the legacy BLAS. Each interface decision is discussed in its own section. Each section also contains a {\em Considered methods} subsection, where other solutions to that particular problem are discussed, along with the reasons why those options were not chosen. These {\em Considered methods} subsections are indented and {\it italicized} in order to distinguish them from the rest of the text. It is largely agreed among the group (and unanimous among the vendors) that user demand for a C interface to the BLAS is insufficient to motivate vendors to support a completely separate standard. This proposal therefore confines itself to an interface which can be readily supported on top of the already existing Fortran 77 callable BLAS (i.e., the legacy BLAS). The interface is expressed in terms of ANSI/ISO C. Very few platforms fail to provide ANSI/ISO C compilers at this time, and for those platforms, free ANSI/ISO C compilers are almost always available (eg., {\tt gcc}). \subsection{Naming scheme}\label{legacy:c_namingscheme} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{legacy:c_namingscheme}, passed 9/0/0, 8/97.\\ %Second vote taken on section~\ref{legacy:c_namingscheme}, passed 8/0/0, 12/97.\\ %Third vote taken on section~\ref{legacy:c_namingscheme}, passed 14/0/0, 4/98. \\ %Fourth vote taken on section~\ref{legacy:c_namingscheme}, passed 8/0/1 with 16 eligible voters, 8/98.} \\ The naming scheme consists of taking the Fortran 77 routine name, making it lower case, and adding the prefix {\tt cblas\_}. Therefore, the routine {\tt DGEMM} becomes {\tt cblas\_dgemm}. \subsubsection{Considered methods} {\it \begin{quotation} Various other naming schemes have been proposed, such as adding {\tt C\_} or {\tt c\_} to the name. Most of these schemes accomplish the requirement of separating the Fortran 77 and C name spaces. It was argued, however, that the addition of the {\tt blas} prefix unifies the naming scheme in a logical and useful way (making it easy to search for BLAS use in a code, for instance), while not placing too great a burden on the typist. The letter {\tt c} is used to distinguish this language interface from possible future interfaces. \end{quotation} } \subsection{Indices and I\_AMAX} \label{sec-Indices} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{sec-Indices}, passed 9/0/0, 8/97.\\ %Second vote taken on section~\ref{sec-Indices}, passed 8/0/0, 12/97.\\ %Third vote taken on section~\ref{sec-Indices}, passed 14/0/0, 4/98.\\ %A binding vote for section~\ref{sec-Indices} was taken to see if we %should allow N=0, passed 8/2/4, 4/98. \\ %Fourth vote taken on section~\ref{sec-Indices}, passed 8/0/1 with 16 eligible voters, 8/98.}\\ The Fortran 77 BLAS return indices in the range $1 \leq I \leq N$ (where $N$ is the number of entries in the dimension in question, and $I$ is the index), in accordance with Fortran 77 array indexing conventions. This allows functions returning indices to be directly used to index standard arrays. The C interface therefore returns indices in the range $0 \leq I < N$ for the same reason. The only BLAS routine which returns an index is the function {\tt I\_AMAX}. This function is declared to be of type {\tt CBLAS\_INDEX}, which is guaranteed to be an integer type (i.e., no cast is required when assigning to any integer type). {\tt CBLAS\_INDEX} will usually correspond to {\tt size\_t} to ensure any array can be indexed, but implementors might choose the integer type which matches their Fortran 77 {\tt INTEGER}, for instance. It is defined that zero is returned as the index for a zero length vector (eg., For $N=0$, {\tt I\_AMAX} will always return zero). \subsection{Character arguments} \label{sec-EnumType} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{sec-EnumType}, passed 9/0/0, 8/97.\\ %Second vote taken on section~\ref{sec-EnumType}, passed 8/0/0, 12/97.\\ %Third vote taken on section~\ref{sec-EnumType}, passed 14/0/0, 4/98. \\ %Fourth vote taken on section~\ref{sec-EnumType}, passed 8/0/1 with 16 eligible voters, 8/98.} \\ All arguments which were characters in the Fortran 77 interface are handled by enumerated types in the C interface. This allows for tighter error checking, and provides less opportunity for user error. The character arguments present in the Fortran 77 interface are: {\tt SIDE}, {\tt UPLO}, {\tt TRANSPOSE}, and {\tt DIAG}. This interface adds another such argument to all routines involving two dimensional arrays, {\tt ORDER}. The standard dictates the following enumerated types: \begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102}; enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113}; enum CBLAS_UPLO {CblasUpper=121, CblasLower=122}; enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132}; enum CBLAS_SIDE {CblasLeft=141, CblasRight=142}; \end{Verbatim} \subsubsection{Considered methods} {\it \begin{quotation} The other two most commonly suggested methods were accepting these arguments as either {\tt char~*} or {\tt char}. It was noted that both of these options require twice as many comparisons as normally required to branch (so that the character may be either upper or lower case). Both methods also suffered from ambiguity (what does it mean to have {\tt DIAG='H'}, for instance). If {\tt char} was chosen, the words could not be written out as they can for the Fortran 77 interface (you couldn't write "NoTranspose"). If {\tt char~*} were used, some compilers might fail to optimize string constant use, causing unnecessary memory usage. The main advantage of enumerated data types, however, is that much of the error checking can be done at compile time, rather than at runtime (i.e., if the user fails to pass one of the valid options, the compiler can issue the error). There was much discussion as to whether the integer values should be specified, or whether only the enumerated names should be so specified. The group could find no substansive way in which specifying the integer values would restrict an implementor, and specifying the integer values was seen as an aid to inter-language calls. \end{quotation} } \subsection{Handling of complex data types}\label{legacy:c_handlingcomplex} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{legacy:c_handlingcomplex}, passed 9/0/0, 8/97.\\ %Second vote taken on section~\ref{legacy:c_handlingcomplex}, passed 7/0/1, 12/97.\\ %Third vote taken on section~\ref{legacy:c_handlingcomplex}, passed 14/0/0, 4/98. \\ %Fourth vote taken on section~\ref{legacy:c_handlingcomplex}, passed 8/0/1 with 16 eligible voters, 8/98.} \\ All complex arguments are accepted as {\tt void *}. A complex element consists of two consecutive memory locations of the underlying data type (i.e., {\tt float} or {\tt double}), where the first location contains the real component, and the second contains the imaginary part of the number. In practice, programmers' methods of handling complex types in C vary. Some use various data structures (some examples are discussed below). Others accept complex numbers as arrays of the underlying type. Complex numbers are accepted as void pointers so that widespread type casting will not be required to avoid warning or errors during compilation of complex code. An ANSI/ISO committee is presently working on an extension to ANSI/ISO C which defines complex data types. The definition of a complex element is the same as given above, and so the handling of complex types by this interface will not need to be changed when ANSI/ISO C standard is extended. \subsubsection{Considered methods} {\it \begin{quotation} Probably the most strongly advocated alternative was defining complex numbers via a structure such as \\ {\tt struct NON\_PORTABLE\_COMPLEX~\{float~r;~float~i;\};} The main problem with this solution is the lack of portability. By the ANSI/ISO C standard, elements in a structure are not guaranteed to be contiguous. With the above structure, padding between elements has been experimentally observed (on the CRAY T3D), so this problem is not purely theoretical. To get around padding problems within the structure, a structure such as \\ {\tt struct NON\_PORTABLE\_COMPLEX~\{float~v[2];\};} has been suggested. With this structure there will obviously be no padding between the real and imaginary parts. However, there still exists the possibility of padding between elements within an array. More importantly, this structure does not lend itself nearly as well as the first to code clarity. A final proposal is to define a structure which may be addressed the same as the one above (i.e., \verb+ptr->r+, \verb+ptr->i+), but whose actual definition is platform dependent. Then, hopefully, various vendors will either use the above structure and ensure via their compilers its contiguousness, or they will create a different structure which can be accessed in the same way. This requires vendors to support something which is not in the ANSI C standard, and so there is no way to ensure this would take place. More to the point, use of such a structure turns out to not offer much in the way of real advantage, as discussed in the following section. All of these approaches require the programmer to either use the specified data type throughout the code which will call the BLAS, or to perform type casting on each BLAS call. When complex numbers are accepted as void pointers, no type casting or data type is dictated, with the only restriction being that a complex number have the definition given above. \end{quotation} } \subsection{Return values of complex functions}\label{legacy:c_returncomplex} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{legacy:c_returncomplex}, passed 9/0/0, 8/97.\\ %Second vote taken on section~\ref{legacy:c_returncomplex}, passed 7/0/1, 12/97.\\ %Third vote taken on section~\ref{legacy:c_returncomplex}, passed 13/0/1, 4/98. \\ %Fourth vote taken on section~\ref{legacy:c_returncomplex}, passed 8/0/1 with 16 eligible voters, 8/98.} \\ BLAS routines which return complex values in Fortran 77 are instead recast as subroutines in the C interface, with the return value being an output parameter added to the end of the argument list. This allows the output parameter to be accepted as void pointers, as discussed above. Further, the name is suffixed by {\tt \_sub}. There are two main reasons for this name change. First, the change from a function to a subroutine is a significant change, and thus the name should reflect this. More importantly, the ``traditional'' name space is specifically reserved for use when the forthcoming ANSI/ISO C extension is finalized. When this is done, this C interface will be extended to include functions using the ``traditional'' names which utilize the new ANSI/ISO complex type to return the values. \subsubsection{Considered methods} {\it \begin{quotation} This is the area where use of a structure is most desired. Again, the most common suggestion is a structure such as\\ \verb+struct NON_PORTABLE_COMPLEX {float r; float i;};+. If one is willing to use this structure throughout one's code, then this provides a natural and convenient mechanism. If, however, the programmer has utilized a different structure for complex, this ease of use breaks down. Then, something like the following code fragment is required: \begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] NON_PORTABLE_COMPLEX ctmp; float cdot[2]; ctmp = cblas_cdotc(n, x, 1, y, 1); cdot[0] = ctmp.r; cdot[1] = ctmp.i; \end{Verbatim} which is certainly much less convenient than:\\ \verb+cblas_cdotc_sub(n, x, 1, y, 1, cdot)+. It should also be noted that the primary reason for having a function instead of a subroutine is already invalidated by C's lack of a standard complex type. Functions are most useful when the result may be used directly as part of an in-line computation. However, since ANSI/ISO C lacks support for complex arithmetic primitives or operator overloading, complex functions cannot be standardly used in this way. Since the function cannot be used as a part of a larger expression, nothing is lost by recasting it as a subroutine; indeed a slight performance win may be obtained. \end{quotation} } \subsection{Array arguments}\label{legacy:c_arrayarguments} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{legacy:c_arrayarguments}, passed 9/0/0, 8/97.\\ %Second vote taken on section~\ref{legacy:c_arrayarguments}, passed 8/0/0, 12/97.\\ %Third vote taken on section~\ref{legacy:c_arrayarguments}, passed 13/0/1, 4/98. \\ %Fourth vote taken on section~\ref{legacy:c_arrayarguments}, passed 8/0/1 with 16 eligible voters, 8/98.} \\ Arrays are constrained to being contiguous in memory. They are accepted as pointers, not as arrays of pointers. %This means that %the C definition of a two dimensional array may not be used directly, since each %row is an arbitrary pointer (i.e., the address of the second row cannot %be obtained from the address of the first row). Note that if the user %somehow ensures the C array is actually contiguous (eg. by allocating %it himself), C two dimensional arrays can indeed be used. All BLAS routines which take one or more two dimensional arrays as arguments receive one extra parameter as their first argument. This argument is of the enumerated type \\ {\tt enum~CBLAS\_ORDER~\{CblasRowMajor=101,~CblasColMajor=102\};}.\\ If this parameter is set to {\tt CblasRowMajor}, it is assumed that elements within a row of the array(s) are contiguous in memory, while elements within array columns are separated by a constant stride given in the {\tt stride} parameter (this parameter corresponds to the leading dimension [e.g. {\tt LDA}] in the Fortran 77 interface). If the order is given as {\tt CblasColMajor}, elements within array columns are assumed to be contiguous, with elements within array rows separated by {\tt stride} memory elements. Note that there is only one {\tt CBLAS\_ORDER} parameter to a given routine: all array operands are required to use the same ordering. \subsubsection{Considered methods} {\it \begin{quotation} This solution comes after much discussion. C users appear to split roughly into two camps. Those people who have a history of mixing C and Fortran 77 (in particular making use of the Fortran 77 BLAS from C), tend to use column-major arrays in order to allow ease of inter-language operations. Because of the flexibility of pointers, this is not appreciably harder than using row-major arrays, even though C ``natively'' possesses row-major arrays. The second camp of C users are not interested in overt C/Fortran 77 interoperability, and wish to have arrays which are row-major, in accordance with standard C conventions. The idea that they must recast their row-oriented algorithms to column-major algorithms is unacceptable; many in this camp would probably not utilize any BLAS which enforced a column-major constraint. Because both camps are fairly widely represented within the target audience, it is impossible to choose one solution to the exclusion of the other. Column-major array storage can obviously be supported directly on top of the legacy Fortran 77 BLAS. Recent work, particularly code provided by D.P. Manley of DEC, has shown that row-major array storage may also be supported in this way with little cost. Appendix~\ref{app-ArrayStore} discusses this issue in detail. To preview it here, we can say the level 1 and 3 BLAS require no extra operations or storage to support row-major operations on top of the legacy BLAS. Level 2 real routines also require no extra operations or storage. Some complex level 2 routines involving the conjugate transpose will require extra storage and operations in order to form explicit conjugates. However, this will always involve vectors, not the matrix. In the worst case, we will need $n$ extra storage, and $3n$ sign changes. One proposal was to accept arrays as arrays of pointers, instead of as a single pointer. %This would correspond exactly to the standard ANSI/ISO C %two dimensional array. The problems with this approach are manifold. First, the existing Fortran 77 BLAS could not be used, since they demand contiguous (though strided) storage. Second, this approach requires users of standard C 2D arrays or 1D arrays to allocate and assign the appropriate pointer array. Beyond this, many of the vectors used in level 1 and level 2 BLAS come from rows or columns of two dimensional arrays. Elements within columns of row-major arrays are not uniformly strided, which means that a {\tt n}-element column vector would need {\tt n} pointers to represent it. This then leads to vectors being accepted as arrays of pointers as well. Now, assuming both our one and two dimensional arrays are accepted as arrays of pointers, we have a problem when we wish to perform sub-array access. If we wish to pass an $m \times n$ subsection of a this array of pointers, starting at row $i$ and column $j$, we must allocate $m$ pointers, and assign them in a section of code such as: \begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] float **A, **subA; subA = malloc(m*sizeof(float*)); for (k=0; k != m; k++) subA[k] = A[i+k] + j; cblas_rout(... subA ...); \end{Verbatim} The same operation must be done if we wish to use a row or column as a vector. This is not only an inconvenience, but can add up to a non-negligible performance loss as well. A fix for these problems is that one and two dimensional arrays be passed as arrays of pointers, and then indices are passed in to indicate the sub-portion to access. Thus you have a call that looks like: \verb|cblas_rout(... A, i, j, ...);|. This solution still requires some additional tweaks to allow using two dimensional array rows and columns as vectors. Users presently using C 2D arrays or 1D arrays would have to malloc the array of pointers as shown in the preceding example in order to use this kind of interface. At any rate, a library accepting pointers to pointers cannot be supported on top of the Fortran 77 BLAS, while one supporting simple pointers can. If the programmer is utilizing the pointer to pointer style of array indexing, it is still possible to use this library providing that the user ensures that the operand matrix is contiguous, and that the rows are constantly strided. If this is the case, the user may pass the operand matrix to the library in precicely the same way as with a 2D C array: \verb|cblas_rout(... &A[i][j] ...);|. \noindent {\bf Example 1: making a library call with a C 2D array:} \begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] double A[50][25]; /* standard C 2D array */ cblas_rout(CblasRowMajor, ... &A[i][j], 25, ...); \end{Verbatim} \noindent {\bf Example 2: Legal use of pointer to pointer style programming and the CBLAS} \begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] double **A, *p; A = malloc(M*sizeof(double *)); p = malloc(M*N*sizeof(double)); for (i=0; i < M; i++) A[i] = &p[i*N]; cblas_rout(CblasRowMajor, ... &A[i][j], N, ...); \end{Verbatim} \noindent {\bf Example 3: Illegal use of pointer to pointer style programming and the CBLAS} \begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] double **A, *p; A = malloc(M*sizeof(double *)); p = malloc(M*N*sizeof(double)); for (i=0; i < M; i++) A[i] = malloc(N*sizeof(double)); cblas_rout(CblasRowMajor, ... &A[i][j], N, ...); \end{Verbatim} Note that Example 3 is illegal because the rows of A have no guaranteed stride. \end{quotation} } \subsection{Aliasing of arguments}\label{legacy:c_aliasing} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{legacy:c_aliasing}, failed, too restrictive, %back to subcommittee, 4/98.\\ %Second vote taken on section~\ref{legacy:c_aliasing}, passed 13/0/0, 4/98.\\ %Third vote taken on section~\ref{legacy:c_aliasing}, passed 8/0/1 with 16 eligible voters, 8/98.}\\ Unless specified otherwise, only input-only arguments (specified with the {\tt const} qualifier), may be legally aliased on a call to the C interface to the BLAS. \subsubsection{Considered methods} The ANSI C standard allows for the aliasing of output arguments. However, allowing this often carries a substantial performance penalty. This, along with the fact that Fortran 77 (which we hope to call for optimized libraries) does not allow aliasing of output arguments, led us to make this restriction. \subsection{C interface include file}\label{legacy:c_includefile} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{legacy:c_includefile}, passed 14/0/0, 4/98.\\ %Second vote taken on section~\ref{legacy:c_includefile}, passed 13/0/0, 4/98.\\ %Third vote taken on section~\ref{legacy:c_includefile}, passed 8/0/1 with 16 eligible voters, 8/98.}\\ The C interface to the BLAS will have a standard include file, called {\tt cblas.h}, which minimally contains the definition of the CBLAS types and ANSI/ISO C prototypes for all BLAS routines. It is not an error to include this file multiple times. Section~\ref{sec-cblash} contains an example of a minimal {\tt cblas.h}. {{\bf ADVICE TO THE IMPLEMENTOR:}\\ \em Note that the vendor is not constrained to using precisely this include file; only the enumerated type definitions are fully specified. The implementor is free to make any other changes which are not apparent to the user. For instance, all matrix dimensions might be accepted as {\tt size\_t} instead of {\tt int}, or the implementor might choose to make some routines inline. } \subsection{Error checking}\label{legacy:c_errorchecking} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{legacy:c_errorchecking}, passed 9/0/0, 8/97.\\ %Second vote taken on section~\ref{legacy:c_errorchecking}, passed 8/0/0, 12/97.\\ %Third vote taken on section~\ref{legacy:c_errorchecking}, passed 13/0/0, 4/98.\\ %Fourth vote taken on section~\ref{legacy:c_errorchecking}, passed 8/0/1 with 16 eligible voters, 8/98.}\\ The C interface to the legacy BLAS must supply error checking corresponding to that provided by the reference Fortran 77 BLAS implementation. %{\it {\bf ADVICE TO IMPLEMENTOR:} %If the Fortran 77 code is used to implement the C interface, most of the error %checking may be done by Fortran 77 code, assuming error reporting is %changed to reflect the differing C interface. %} \subsection{Rules for obtaining the C interface from the Fortran 77} \label{legacy:c_rules} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{legacy:c_rules}, passed 9/0/1 with 16 eligible voters, 8/98.}\\ \begin{itemize} \item The Fortran 77 routine name is changed to lower case, and prefixed by {\tt cblas\_}. \item All routines which accept two dimensional arrays (i.e., level 2 and 3), acquire a new parameter of type {\tt CBLAS\_ORDER} as their first argument, which determines if the two dimensional arrays are row or column major. \item {\em Character arguments} are replaced by the appropriate enumerated type, as shown in Section~\ref{sec-EnumType}. \item {\em Input arguments} are declared with the {\tt const} modifier. \item {\em Non-complex scalar input arguments} are passed by value. This allows the user to put in constants when desired (eg., passing 10 on the command line for \verb+N+). \item {\em Complex scalar input arguments} are passed as void pointers, since they do not exist as a predefined data type in ANSI/ISO C. \item {\em Array arguments} are passed by address. \item {\em Output scalar arguments} are passed by address. \item {\em Complex functions} become subroutines which return the result via a void pointer, added as the last parameter. The name is suffixed with {\tt \_sub}. \end{itemize} \subsection{cblas.h include file} \label{sec-cblash} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{sec-cblash}, passed 9/0/1 with 16 eligible voters, 8/98.}\\ \begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] #ifndef CBLAS_H #define CBLAS_H #include /* * Enumerated and derived types */ #define CBLAS_INDEX size_t /* this may vary between platforms */ enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102}; enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113}; enum CBLAS_UPLO {CblasUpper=121, CblasLower=122}; enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132}; enum CBLAS_SIDE {CblasLeft=141, CblasRight=142}; /* * =========================================================================== * Prototypes for level 1 BLAS functions (complex are recast as routines) * =========================================================================== */ float cblas_sdsdot(const int N, const float alpha, const float *X, const int incX, const float *Y, const int incY); double cblas_dsdot(const int N, const float *X, const int incX, const float *Y, const int incY); float cblas_sdot(const int N, const float *X, const int incX, const float *Y, const int incY); double cblas_ddot(const int N, const double *X, const int incX, const double *Y, const int incY); /* * Functions having prefixes Z and C only */ void cblas_cdotu_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu); void cblas_cdotc_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotc); void cblas_zdotu_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotu); void cblas_zdotc_sub(const int N, const void *X, const int incX, const void *Y, const int incY, void *dotc); /* * Functions having prefixes S D SC DZ */ float cblas_snrm2(const int N, const float *X, const int incX); float cblas_sasum(const int N, const float *X, const int incX); double cblas_dnrm2(const int N, const double *X, const int incX); double cblas_dasum(const int N, const double *X, const int incX); float cblas_scnrm2(const int N, const void *X, const int incX); float cblas_scasum(const int N, const void *X, const int incX); double cblas_dznrm2(const int N, const void *X, const int incX); double cblas_dzasum(const int N, const void *X, const int incX); /* * Functions having standard 4 prefixes (S D C Z) */ CBLAS_INDEX cblas_isamax(const int N, const float *X, const int incX); CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX); CBLAS_INDEX cblas_icamax(const int N, const void *X, const int incX); CBLAS_INDEX cblas_izamax(const int N, const void *X, const int incX); /* * =========================================================================== * Prototypes for level 1 BLAS routines * =========================================================================== */ /* * Routines with standard 4 prefixes (s, d, c, z) */ void cblas_sswap(const int N, float *X, const int incX, float *Y, const int incY); void cblas_scopy(const int N, const float *X, const int incX, float *Y, const int incY); void cblas_saxpy(const int N, const float alpha, const float *X, const int incX, float *Y, const int incY); void cblas_dswap(const int N, double *X, const int incX, double *Y, const int incY); void cblas_dcopy(const int N, const double *X, const int incX, double *Y, const int incY); void cblas_daxpy(const int N, const double alpha, const double *X, const int incX, double *Y, const int incY); void cblas_cswap(const int N, void *X, const int incX, void *Y, const int incY); void cblas_ccopy(const int N, const void *X, const int incX, void *Y, const int incY); void cblas_caxpy(const int N, const void *alpha, const void *X, const int incX, void *Y, const int incY); void cblas_zswap(const int N, void *X, const int incX, void *Y, const int incY); void cblas_zcopy(const int N, const void *X, const int incX, void *Y, const int incY); void cblas_zaxpy(const int N, const void *alpha, const void *X, const int incX, void *Y, const int incY); /* * Routines with S and D prefix only */ void cblas_srotg(float *a, float *b, float *c, float *s); void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P); void cblas_srot(const int N, float *X, const int incX, float *Y, const int incY, const float c, const float s); void cblas_srotm(const int N, float *X, const int incX, float *Y, const int incY, const float *P); void cblas_drotg(double *a, double *b, double *c, double *s); void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P); void cblas_drot(const int N, double *X, const int incX, double *Y, const int incY, const double c, const double s); void cblas_drotm(const int N, double *X, const int incX, double *Y, const int incY, const double *P); /* * Routines with S D C Z CS and ZD prefixes */ void cblas_sscal(const int N, const float alpha, float *X, const int incX); void cblas_dscal(const int N, const double alpha, double *X, const int incX); void cblas_cscal(const int N, const void *alpha, void *X, const int incX); void cblas_zscal(const int N, const void *alpha, void *X, const int incX); void cblas_csscal(const int N, const float alpha, void *X, const int incX); void cblas_zdscal(const int N, const double alpha, void *X, const int incX); /* * =========================================================================== * Prototypes for level 2 BLAS * =========================================================================== */ /* * Routines with standard 4 prefixes (S, D, C, Z) */ void cblas_sgemv(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY); void cblas_sgbmv(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const int KL, const int KU, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY); void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const float *A, const int lda, float *X, const int incX); void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const float *A, const int lda, float *X, const int incX); void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const float *Ap, float *X, const int incX); void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const float *A, const int lda, float *X, const int incX); void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const float *A, const int lda, float *X, const int incX); void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const float *Ap, float *X, const int incX); void cblas_dgemv(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY); void cblas_dgbmv(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const int KL, const int KU, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY); void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const double *A, const int lda, double *X, const int incX); void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const double *A, const int lda, double *X, const int incX); void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const double *Ap, double *X, const int incX); void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const double *A, const int lda, double *X, const int incX); void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const double *A, const int lda, double *X, const int incX); void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const double *Ap, double *X, const int incX); void cblas_cgemv(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_cgbmv(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const int KL, const int KU, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void *A, const int lda, void *X, const int incX); void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const void *A, const int lda, void *X, const int incX); void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void *Ap, void *X, const int incX); void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void *A, const int lda, void *X, const int incX); void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const void *A, const int lda, void *X, const int incX); void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void *Ap, void *X, const int incX); void cblas_zgemv(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_zgbmv(const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const int KL, const int KU, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void *A, const int lda, void *X, const int incX); void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const void *A, const int lda, void *X, const int incX); void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void *Ap, void *X, const int incX); void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void *A, const int lda, void *X, const int incX); void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const int K, const void *A, const int lda, void *X, const int incX); void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const void *Ap, void *X, const int incX); /* * Routines with S and D prefixes only */ void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY); void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const int K, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY); void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float *Ap, const float *X, const int incX, const float beta, float *Y, const int incY); void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N, const float alpha, const float *X, const int incX, const float *Y, const int incY, float *A, const int lda); void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float *X, const int incX, float *A, const int lda); void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float *X, const int incX, float *Ap); void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float *X, const int incX, const float *Y, const int incY, float *A, const int lda); void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float *X, const int incX, const float *Y, const int incY, float *A); void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY); void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const int K, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY); void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double *Ap, const double *X, const int incX, const double beta, double *Y, const int incY); void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N, const double alpha, const double *X, const int incX, const double *Y, const int incY, double *A, const int lda); void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double *X, const int incX, double *A, const int lda); void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double *X, const int incX, double *Ap); void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double *X, const int incX, const double *Y, const int incY, double *A, const int lda); void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double *X, const int incX, const double *Y, const int incY, double *A); /* * Routines with C and Z prefixes only */ void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const int K, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void *alpha, const void *Ap, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda); void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda); void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const void *X, const int incX, void *A, const int lda); void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const float *alpha, const void *X, const int incX, void *A); void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda); void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *Ap); void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const int K, const void *alpha, const void *A, const int lda, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void *alpha, const void *Ap, const void *X, const int incX, const void *beta, void *Y, const int incY); void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda); void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda); void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const void *X, const int incX, void *A, const int lda); void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const double *alpha, const void *X, const int incX, void *A); void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *A, const int lda); void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N, const void *alpha, const void *X, const int incX, const void *Y, const int incY, void *Ap); /* * =========================================================================== * Prototypes for level 3 BLAS * =========================================================================== */ /* * Routines with standard 4 prefixes (S, D, C, Z) */ void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float *A, const int lda, const float *B, const int ldb, const float beta, float *C, const int ldc); void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const float alpha, const float *A, const int lda, const float *B, const int ldb, const float beta, float *C, const int ldc); void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const float alpha, const float *A, const int lda, const float beta, float *C, const int ldc); void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const float alpha, const float *A, const int lda, const float *B, const int ldb, const float beta, float *C, const int ldc); void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float *A, const int lda, float *B, const int ldb); void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float *A, const int lda, float *B, const int ldb); void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const double alpha, const double *A, const int lda, const double *B, const int ldb, const double beta, double *C, const int ldc); void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const double alpha, const double *A, const int lda, const double *B, const int ldb, const double beta, double *C, const int ldc); void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const double alpha, const double *A, const int lda, const double beta, double *C, const int ldc); void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const double alpha, const double *A, const int lda, const double *B, const int ldb, const double beta, double *C, const int ldc); void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const double alpha, const double *A, const int lda, double *B, const int ldb); void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const double alpha, const double *A, const int lda, double *B, const int ldb); void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc); void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc); void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void *alpha, const void *A, const int lda, const void *beta, void *C, const int ldc); void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc); void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const void *alpha, const void *A, const int lda, void *B, const int ldb); void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const void *alpha, const void *A, const int lda, void *B, const int ldb); void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc); void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc); void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void *alpha, const void *A, const int lda, const void *beta, void *C, const int ldc); void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc); void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const void *alpha, const void *A, const int lda, void *B, const int ldb); void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const void *alpha, const void *A, const int lda, void *B, const int ldb); /* * Routines with prefixes C and Z only */ void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc); void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const float alpha, const void *A, const int lda, const float beta, void *C, const int ldc); void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const float beta, void *C, const int ldc); void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const int M, const int N, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const void *beta, void *C, const int ldc); void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const double alpha, const void *A, const int lda, const double beta, void *C, const int ldc); void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const void *alpha, const void *A, const int lda, const void *B, const int ldb, const double beta, void *C, const int ldc); #endif \end{Verbatim} \subsection{Using Fortran 77 BLAS to support row-major BLAS operations} \label{app-ArrayStore} %{\footnotesize {\bf Current Status:}\\ %First vote taken on section~\ref{app-ArrayStore}, passed 9/0/1 with 16 eligible voters, 8/98.}\\ This section is not part of the standard per se. Rather, it exists as an advice to the implementor on how row-major BLAS operations may be implemented using column-major BLAS. This allows vendors to leverage years of Fortran 77 BLAS developement in producing the C BLAS. Before this issue is examined in detail, a few general observations on array storage are helpful. We must distinguish between the matrix and the array which is used to store the matrix. The matrix, and its rows and columns, have mathematical meaning. The array is simply the method of storing the matrix, and its rows and columns are significant only for memory addressing. Thus we see we can store the columns of a matrix in the rows of an array, for instance. When this occurs in the BLAS, the matrix is said to be stored in transposed form. A row-major array stores elements along a row in contiguous storage, and separates the column elements by some constant stride (often the actual length of a row). Column-major arrays have contiguous columns, and strided rows. The importance of this is to note that a row-major array storing a matrix in the natural way, is a transposed column-major array (i.e., it can be thought of as a column-major array where the rows of the matrix are stored in the columns of the array). Similarly, an upper triangular row-major array corresponds to a transposed lower triangular column-major array (the same is true in reverse [i.e., lower-to-upper], obviously). To see this, simply think of what a upper triangular matrix stored in a row-major array looks like. The first $n$ entries contain the first matrix row, followed by a non-negative gap, followed by the second matrix row. If this same array is viewed as column-major, the first $n$ entries are a column, instead of a row, so that the columns of the array store the rows of the matrix (i.e., it is transposed). This means that if we wish to use the Fortran 77 (column-major) BLAS with triangular matrices coming from C (possibly row-major), we will be reversing the setting of {\tt UPLO}, while simultaneously reversing the setting of {\tt TRANS} (this gets slightly more complicated when the conjugate transpose is involved, as we will see). Finally, note that if a matrix is symmetric or Hermitian, its rows are the same as its columns, so we may merely switch {\tt UPLO}, without bothering with {\tt TRANS}. In the BLAS, there are two separate cases of importance. one dimensional arrays (storage for vectors) have the same meaning in both C and Fortran 77, so if we are solving a linear algebra problem who's answer is a vector, we will need to solve the same problem for both languages. However, if the answer is a matrix, in terms of calling routines which use column-major storage from one using row-major storage, we will want to solve the {\em transpose} of the problem. To get an idea of what this means, consider a contrived example. Say we have routines for simple matrix-matrix and matrix-vector multiply. The vector operation is $y \leftarrow A \times x$, and the matrix operation is $C \leftarrow A \times B$. Now say we are implementing these as calls from row-major array storage to column-major storage. Since the matrix-vector multiply's answer is a vector, the problem we are solving is remains the same, but we must remember that our C array $A$ is a Fortran 77 $A^T$. On the other hand, the matrix-matrix multiply has a matrix for a result, so when the differing array storage is taken into account, the problem we want to solve is $C^T \leftarrow B^T \times A^T$. This last example demonstrates another general result. Some level 3 BLAS contain a {\tt SIDE} parameter, determining which side a matrix is applied on. In general, if we are solving the transpose of this operation, the side parameter will be reversed. With these general principles, it is possible to show that all that row-major level 3 BLAS can be expressed in terms of column-major BLAS without any extra array storage or extra operations. In the level 2 BLAS, no extra storage or array accesses are required for the real routines. Complex routines involving the conjugate transpose, however, may require a $n$-element temporary, and up to $3n$ more operations (vendors may avoid all extra workspace and operations by overloading the {\tt TRANS} option for the level 2 BLAS: letting it also allow conjugation without doing the transpose). The level 1 BLAS, which deal exclusively with vectors, are unaffected by this storage issue. With these ideas in mind, we will now show how to support a row-major BLAS on top of a column major BLAS. This information will be presented in tabular form. For brevity, row-major storage will be referred to as coming from C (even though column-major arrays can also come from C), while column-major storage will be referred to as F77. Each table will show a BLAS invocation coming from C, the operation that the BLAS should perform, the operation required once F77 storage is taken into account (if this changes), and the call to the appropriate F77 BLAS. Not every possible combination of parameters is shown, since many are simply reflections of another (i.e., when we are applying the {\tt Upper, NoTranspose} becomes {\tt Lower, Transpose} rule, we will show it for only the upper case. In order to make the notation more concise, let us define $\overline{x}$ to be $conj(x)$. \subsubsection{Level 2 BLAS} \subsubsection{GEMV} \noindent {\small \begin{tabular}{ll} C call & {\tt cblas\_cgemv(CblasRowMajor, CblasNoTrans, m, n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\ op & $y \leftarrow \alpha A x + \beta y$\\ F77 call & {\tt CGEMV('T', n, m, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\\\ % C call & {\tt cblas\_cgemv(CblasRowMajor, CblasTrans, m, n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\ op & $y \leftarrow \alpha A^T x + \beta y$\\ F77 call & {\tt CGEMV('N', n, m, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\\\ % C call & {\tt cblas\_cgemv(CblasRowMajor, CblasConjTrans, m, n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\ op & $y \leftarrow \alpha A^H x + \beta y \Rightarrow \overline{(\overline{y} \leftarrow \overline{\alpha} A^T \overline{x} + \overline{\beta} \overline{y})}$\\ F77 call & {\tt CGEMV('N', n, m, $\overline{\alpha}$, A, lda, $\overline{x}$, 1, $\overline{\beta}$, $\overline{y}$, incy)}\\\\ \end{tabular} } Note that we switch the value of transpose to handle the row/column major ordering difference. In the last case, we will require $n$ elements of workspace so that we may store the conjugated vector $\overline{x}$. Then, we set $y = \overline{y}$, and make the call. This gives us the conjugate of the answer, so we once again set $y = \overline{y}$. Therefore, we see that to support the conjugate transpose, we will need to allocate an $n$-element vector, and perform $2m+n$ extra operations. \subsubsection{SYMV} SYMV requires no extra workspace or operations. {\small \begin{tabular}{ll} C call & {\tt cblas\_csymv(CblasRowMajor, CblasUpper, n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\ op & $y \leftarrow \alpha A x + \beta y \Rightarrow y \leftarrow \alpha A^T x + \beta y$\\ F77 call & {\tt CSYMV('L', n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\\\ % %C call & {\tt cblas\_csymv(CblasRowMajor, CblasLower, n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\ %op & $y \leftarrow \alpha A x + \beta y$\\ %F77 call & {\tt CSYMV('U', n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\ \end{tabular} } \subsubsection{HEMV} HEMV routine requires $3n$ conjugations, and $n$ extra storage. {\small \begin{tabular}{ll} C call & {\tt cblas\_chemv(CblasRowMajor, CblasUpper, n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\ op & $y \leftarrow \alpha A x + \beta y \Rightarrow y \leftarrow \alpha A^H x + \beta y \Rightarrow \overline{(\overline{y} \leftarrow \overline{\alpha} A^T \overline{x} + \overline{\beta} \overline{y})}$\\ F77 call & {\tt CHEMV('L', n, $\overline{\alpha}$, A, lda, $\overline{x}$, incx, $\overline{\beta}$, $\overline{y}$, incy)}\\\\ % %C call & {\tt cblas\_chemv(CblasRowMajor, CblasLower, n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\ %op & $y \leftarrow \alpha A x + \beta y$\\ %F77 call & {\tt CHEMV('U', n, $\alpha$, A, lda, x, incx, $\beta$, y, incy)}\\ \end{tabular} } \subsubsection{TRMV/TRSV} \noindent { \small \begin{tabular}{ll} C call & {\tt cblas\_ctrmv(CblasRowMajor, CblasUpper, CblasNoTrans, diag, n, A, lda, x, incx)}\\ op & $x \leftarrow A x$\\ F77 call & {\tt CTRMV('L', 'T', diag, n, A, lda, x, incx)}\\\\ % C call & {\tt cblas\_ctrmv(CblasRowMajor, CblasUpper, CblasTrans, diag, n, A, lda, x, incx)}\\ op & $x \leftarrow A^T x$\\ F77 call & {\tt CTRMV('L', 'N', diag, n, A, lda, x, incx)}\\\\ % C call & {\tt cblas\_ctrmv(CblasRowMajor, CblasUpper, CblasConjTrans, diag, n, A, lda, x, incx)}\\ op & $x \leftarrow A^H x \Rightarrow \overline{(\overline{x} = A^T \overline{x})}$\\ F77 call & {\tt CTRMV('L', 'N', diag, n, A, lda, $\overline{x}$, incx)}\\\\ \end{tabular} } Again, we see that we will need some extra operations when we are handling the conjugate transpose. We conjugate $x$ before the call, giving us the conjugate of the answer we seek. We then conjugate this again to return the correct answer. This routine therefore needs $2n$ extra operations for the complex conjugate case. The calls with the C array being {\tt Lower} are merely the reflection of these calls, and thus are not shown. The analysis for TRMV is the same, since it involves the same principle of what a transpose of a triangular matrix is. \subsubsection{GER/GERU} This is our first routine that has a matrix as the solution. Recalling that this means we solve the transpose of the original problem, we get: { \small \noindent \begin{tabular}{ll} C call & {\tt cblas\_cgeru(CblasRowMajor, m, n, $\alpha$, x, incx, y, incy, A, lda)}\\ C op & $A \leftarrow \alpha x y^T + A$ \\ F77 op & $A^T \leftarrow \alpha y x^T +A^T$ \\ F77 call & {\tt CGERU(n, m, $\alpha$, y, incy, x, incx, A, lda)}\\\\ \end{tabular} } No extra storage or operations are required. \subsubsection{GERC} { \small \begin{tabular}{ll} C call & {\tt cblas\_cgerc(CblasRowMajor, m, n, $\alpha$, x, incx, y, incy, A, lda)}\\ C op & $A \leftarrow \alpha x y^H + A$ \\ F77 op & $A^T \leftarrow \alpha (x y^H)^T + A^T = \alpha \overline{y} x^T + A^T$ \\ F77 call & {\tt CGERU(n, m, $\alpha$, $\overline{y}$, incy, x, incx, A, lda)}\\\\ \end{tabular} } Note that we need to allocate $n$-element workspace to hold the conjugated $y$, and we call {\tt GERU}, not {\tt GERC}. \subsubsection{HER} { \small \begin{tabular}{ll} C call & {\tt cblas\_cher(CblasRowMajor, CblasUpper, n, $\alpha$, x, incx, A, lda)}\\ C op & $A \leftarrow \alpha x x^H + A$ \\ F77 op & $A^T \leftarrow \alpha \overline{x} x^T + A^T$ \\ F77 call & {\tt CHER('L', n, $\alpha$, $\overline{x}$, 1, A, lda)}\\\\ \end{tabular} } Again, we have an $n$-element workspace and $n$ extra operations. \subsubsection{HER2} { \small \begin{tabular}{ll} C call & {\tt cblas\_cher2(CblasRowMajor, CblasUpper, n, $\alpha$, x, incx, y, incy, A, lda)}\\ C op & $A \leftarrow \alpha x y^H + y (\alpha x)^H + A$ \\ F77 op & $A^T \leftarrow \alpha \overline{y} x^T + \overline{\alpha} \overline{x} y^T + A^T = \alpha \overline{y} (\overline{x})^H + \overline{x} (\alpha \overline{y})^H + A^T$ \\ F77 call & {\tt CHER2('L', n, $\alpha$, $\overline{y}$, 1, $\overline{x}$, 1, A, lda)}\\\\ \end{tabular} } So we need $2n$ extra workspace and operations to form the conjugates of $x$ and $y$. \subsubsection{SYR} {\small \begin{tabular}{ll} C call & {\tt cblas\_ssyr(CblasRowMajor, CblasUpper, n, $\alpha$, x, incx, A, lda)}\\ C op & $A \leftarrow \alpha x x^T + A$ \\ F77 op & $A^T \leftarrow \alpha x x^T + A^T$ \\ F77 call & {\tt SSYR('L', n, $\alpha$, x, incx, A, lda)}\\\\ \end{tabular} } No extra storage or operations required. \subsubsection{SYR2} {\small \begin{tabular}{ll} C call & {\tt cblas\_ssyr2(CblasRowMajor, CblasUpper, n, $\alpha$, x, incx, y, incy, A, lda)}\\ C op & $A \leftarrow \alpha x y^T + \alpha y x^T + A$ \\ F77 op & $A^T \leftarrow \alpha y x^T + \alpha x y^T + A^T$ \\ F77 call & {\tt SSYR2('L', n, $\alpha$, y, incy, x, incx, A, lda)}\\\\ \end{tabular} } No extra storage or operations required. \subsubsection{Level 3 BLAS} \subsubsection{GEMM} {\footnotesize \begin{tabular}{ll} C call & {\tt cblas\_cgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, m, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A B + \beta C$\\ F77 op & $C^T \leftarrow \alpha B^T A^T + \beta C^T$\\ F77 call & {\tt CGEMM('N', 'N', n, m, k, $\alpha$, B, ldb, A, lda, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cgemm(CblasRowMajor, CblasNoTrans, CblasTrans, m, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A B^T + \beta C$\\ F77 op & $C^T \leftarrow \alpha B A^T + \beta C^T$\\ F77 call & {\tt CGEMM('T', 'N', n, m, k, $\alpha$, B, ldb, A, lda, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cgemm(CblasRowMajor, CblasNoTrans, CblasConjTrans, m, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A B^H + \beta C$\\ F77 op & $C^T \leftarrow \alpha \overline{B} A^T + \beta C^T$\\ F77 call & {\tt CGEMM('C', 'N', n, m, k, $\alpha$, B, ldb, A, lda, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cgemm(CblasRowMajor, CblasTrans, CblasNoTrans, m, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^T B + \beta C$\\ F77 op & $C^T \leftarrow \alpha B^T A + \beta C^T$\\ F77 call & {\tt CGEMM('N', 'T', n, m, k, $\alpha$, B, ldb, A, lda, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cgemm(CblasRowMajor, CblasTrans, CblasTrans, m, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^T B^T + \beta C$\\ F77 op & $C^T \leftarrow \alpha B A + \beta C^T$\\ F77 call & {\tt CGEMM('T', 'T', n, m, k, $\alpha$, B, ldb, A, lda, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cgemm(CblasRowMajor, CblasTrans, CblasConjTrans, m, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^T B^H + \beta C$\\ F77 op & $C^T \leftarrow \alpha \overline{B} A + \beta C^T$\\ F77 call & {\tt CGEMM('C', 'T', n, m, k, $\alpha$, B, ldb, A, lda, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cgemm(CblasRowMajor, CblasConjTrans, CblasNoTrans, m, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^H B + \beta C$\\ F77 op & $C^T \leftarrow \alpha B^T \overline{A} + \beta C^T$\\ F77 call & {\tt CGEMM('N', 'C', n, m, k, $\alpha$, B, ldb, A, lda, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cgemm(CblasRowMajor, CblasConjTrans, CblasTrans, m, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^H B^T + \beta C$\\ F77 op & $C^T \leftarrow \alpha B \overline{A} + \beta C^T$\\ F77 call & {\tt CGEMM('T', 'C', n, m, k, $\alpha$, B, ldb, A, lda, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cgemm(CblasRowMajor, CblasConjTrans, CblasConjTrans, m, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^H B^H + \beta C$\\ F77 op & $C^T \leftarrow \alpha \overline{B} \overline{A} + \beta C^T$\\ F77 call & {\tt CGEMM('C', 'C', n, m, k, $\alpha$, B, ldb, A, lda, $\beta$, C, ldc)}\\\\ \end{tabular} } \subsubsection{SYMM/HEMM} {\small \begin{tabular}{ll} C call & {\tt cblas\_chemm(CblasRowMajor, CblasLeft, CblasUpper, m, n, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A B + \beta C$\\ F77 op & $C^T \leftarrow \alpha B^T A^T + \beta C^T$\\ F77 call & {\tt CHEMM('R', 'L', n, m, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_chemm(CblasRowMajor, CblasRight, CblasUpper, m, n, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha B A + \beta C$\\ F77 op & $C^T \leftarrow \alpha A^T B^T + \beta C^T$\\ F77 call & {\tt CHEMM('L', 'L', n, m, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ \end{tabular} } \subsubsection{SYRK} {\small \begin{tabular}{ll} C call & {\tt cblas\_csyrk(CblasRowMajor, CblasUpper, CblasNoTrans, n, k, $\alpha$, A, lda, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A A^T + \beta C$\\ F77 op & $C^T \leftarrow \alpha A A^T + \beta C^T$\\ F77 call & {\tt CSYRK('L', 'T', n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_csyrk(CblasRowMajor, CblasUpper, CblasTrans, n, k, $\alpha$, A, lda, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^T A + \beta C$\\ F77 op & $C^T \leftarrow \alpha A^T A + \beta C^T$\\ F77 call & {\tt CSYRK('L', 'N', n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ \end{tabular} } In reading the above descriptions, it is important to remember a few things. First, the symmetric matrix is $C$, and thus we change {\tt UPLO} to accommodate the differing storage of $C$. {\tt TRANSPOSE} is then varied to handle the storage effects on $A$. \subsubsection{HERK} {\small \begin{tabular}{ll} C call & {\tt cblas\_cherk(CblasRowMajor, CblasUpper, CblasNoTrans, n, k, $\alpha$, A, lda, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A A^H + \beta C$\\ F77 op & $C^T \leftarrow \alpha \overline{A} A^T + \beta C^T$\\ F77 call & {\tt CHERK('L', 'C', n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cherk(CblasRowMajor, CblasUpper, CblasConjTrans, n, k, $\alpha$, A, lda, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^H A + \beta C$\\ F77 op & $C^T \leftarrow \alpha A^T \overline{A} + \beta C^T$\\ F77 call & {\tt CHERK('L', 'N', n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ \end{tabular} } \subsubsection{SYR2K} { \footnotesize \begin{tabular}{ll} C call & {\tt cblas\_csyr2k(CblasRowMajor, CblasUpper, CblasNoTrans, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A B^T + \alpha B A^T + \beta C$\\ F77 op & $C^T \leftarrow \alpha B A^T + \alpha A B^T + \beta C^T = \alpha A B^T + \alpha B A^T + \beta C^T$\\ F77 call & {\tt CSYR2K('L', 'T', n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_csyr2k(CblasRowMajor, CblasUpper, CblasTrans, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^T B + \alpha B^T A + \beta C$\\ F77 op & $C^T \leftarrow \alpha B^T A + \alpha A^T B + \beta C^T = \alpha A^T B + \alpha B^T A + \beta C^T$\\ F77 call & {\tt CSYR2K('L', 'N', n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ \end{tabular} } Note that we once again wind up with an operation that looks the same from C and Fortran 77, saving that the C operations wishes to form $C^T$, instead of $C$. So once again we flip the setting of {\tt UPLO} to handle the difference in the storage of $C$. We then flip the setting of {\tt TRANS} to handle the storage effects for $A$ and $B$. \subsubsection{HER2K} {\footnotesize \begin{tabular}{ll} C call & {\tt cblas\_cher2k(CblasRowMajor, CblasUpper, CblasNoTrans, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A B^H + \overline{\alpha} B A^H + \beta C$\\ F77 op & $C^T \leftarrow \alpha \overline{B} A^T + \overline{\alpha} \overline{A} B^T + \beta C^T = \overline{\alpha} \overline{A} B^T + \alpha \overline{B} A^T + \beta C^T$\\ F77 call & {\tt CHER2K('L', 'C', n, k, $\overline{\alpha}$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ % C call & {\tt cblas\_cher2k(CblasRowMajor, CblasUpper, CblasConjTrans, n, k, $\alpha$, A, lda, B, ldb, $\beta$, C, ldc)}\\ C op & $C \leftarrow \alpha A^H B + \overline{\alpha} B^H A + \beta C$\\ F77 op & $C^T \leftarrow \alpha B^T \overline{A} + \overline{\alpha} A^T \overline{B} + \beta C^T = \overline{\alpha} A^T \overline{B} + \alpha B^T \overline{A} + \beta C^T$\\ F77 call & {\tt CHER2K('L', 'N', n, k, $\overline{\alpha}$, A, lda, B, ldb, $\beta$, C, ldc)}\\\\ \end{tabular} } \subsubsection{TRMM/TRSM} Because of their identical use of the {\tt SIDE}, {\tt UPLO}, and {\tt TRANSA} parameters, TRMM and TRSM share the same general analysis. Remember that A is a triangular matrix, and thus when we handle its storage by flipping {\tt UPLO}, we implicitly change its {\tt TRANS} setting as well. With this in mind, we have: {\footnotesize \noindent \begin{tabular}{ll} C call & {\tt cblas\_ctrmm(CblasRowMajor, CblasLeft, CblasUpper, CblasNoTrans, diag, m, n, $\alpha$, A, lda, B, ldb)}\\ C op & $B \leftarrow \alpha A B$\\ F77 op & $B^T \leftarrow \alpha B^T A^T$\\ F77 call & {\tt CTRMM('R', 'L', 'N', diag, n, m, $\alpha$, A, lda, B, ldb)}\\\\ % C call & {\tt cblas\_ctrmm(CblasRowMajor, CblasLeft, CblasUpper, CblasTrans, diag, m, n, $\alpha$, A, lda, B, ldb)}\\ C op & $B \leftarrow \alpha A^T B$\\ F77 op & $B^T \leftarrow \alpha B^T A$\\ F77 call & {\tt CTRMM('R', 'L', 'T', diag, n, m, $\alpha$, A, lda, B, ldb)}\\\\ % C call & {\tt cblas\_ctrmm(CblasRowMajor, CblasLeft, CblasUpper, CblasConjTrans, diag, m, n, $\alpha$, A, lda, B, ldb)}\\ C op & $B \leftarrow \alpha A^H B$\\ F77 op & $B^T \leftarrow \alpha B^T \overline{A}$\\ F77 call & {\tt CTRMM('R', 'L', 'C', diag, n, m, $\alpha$, A, lda, B, ldb)}\\\\ \end{tabular} } \subsubsection{Banded routines}\label{cint:banded} The above techniques can be used for the banded routines only if a C (row-major) banded array has some sort of meaning when expanded as a Fortran banded array. It turns out that when this is done, you get the transpose of the C array, just as in the dense case. In Fortran 77, the banded array is an array whose rows correspond to the diagonals of the matrix, and whose columns contain the selected portion of the matrix column. To rephrase this, the diagonals of the matrix are stored in strided storage, and the relevant pieces of the columns of the matrix are stored in contiguous memory. This makes sense: in a column-based algorithm, you will want your columns to be contiguous for efficiency reasons. In order to ensure our columns are contiguous, we will structure the banded array as shown below. Notice that the first $K_U$ rows of the array store the superdiagonals, appropriately spaced to line up correctly in the column direction with the main diagonal. The last $K_L$ rows contain the subdiagonals. {\samepage \begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] ------ Super diagonal KU ----------- Super diagonal 2 ------------ Super diagonal 1 ------------- main diagonal (D) ------------ Sub diagonal 1 ----------- Sub diagonal 2 ------ Sub diagonal KL \end{Verbatim} } If we have a row-major storage, and thus a row-oriented algorithm, we will similarly want our rows to be contiguous in order to ensure efficiency. The storage scheme that is thus dictated is shown below. Notice that the first $K_L$ columns store the subdiagonals, appropriately padded to line up with the main diagonal along rows. {\samepage \begin{Verbatim}[fontsize=\small,fontfamily=tt,fontshape=rm] KL D KU | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | \end{Verbatim} } Now, let us contrast these two storage schemes. Both store the diagonals of the matrix along the non-contiguous dimension of the matrix. The column-major banded array stores the matrix columns along the contiguous dimension, whereas the row-major banded array stores the matrix rows along the contiguous storage. This gives us our first hint as to what to do: rows stored where columns should be, indicated, in the dense routines, that we needed to set a transpose parameter. We will see that we can do this for the banded routines as well. We can further note that in the column-major banded array, the first part of the non-contiguous dimension (i.e. the first rows) store superdiagonals, whereas the first part of the non-contiguous dimension of row-major arrays (i.e., the first columns) store the subdiagonals. We now note that when you transpose a matrix, the superdiagonals of the matrix become the subdiagonals of the matrix transpose (and vice versa). Along the contiguous dimension, we note that we skip $K_U$ elements before coming to our first entry in a column-major banded array. The same happens in our row-major banded array, except that the skipping factor is $K_L$. All this leads to the idea that when we have a row-major banded array, we can consider it as a transpose of the Fortran 77 column-major banded array, where we will swap not only $m$ and $n$, but also $K_U$ and $K_L$. An example should help demonstrate this principle. Let us say we have the matrix $ A = \left [ \begin{array}{rrrr} 1 & 3 & 5 & 7\\ 2 & 4 & 6 & 8 \end{array} \right ] $ If we express this entire array in banded form (a fairly dumb thing to do, but good for example purposes), we get $K_U = 3$, $K_L = 1$. In row-major banded storage this becomes: $ C_b = \left [ \begin{array}{rrrrr} X & 1 & 3 & 5 & 7\\ 2 & 4 & 6 & 8 & X \end{array} \right ] $ So, we believe this should be the transpose if interpreted as a Fortran 77 banded array. The matrix transpose, and its Fortran 77 banded storage is shown below: $A^T = \left [ \begin{array}{rr} 1 & 2\\ 3 & 4\\ 5 & 6\\ 7 & 8 \end{array} \right ] \Rightarrow F_b = \left [ \begin{array}{rr} X & 2\\ 1 & 4\\ 3 & 6\\ 5 & 8\\ 7 & X \end{array} \right ]$ Now we simply note that since $C_b$ is row major, and $F_b$ is column-major, they are actually the same array in memory. With the idea that row-major banded matrices produce the transpose of the matrix when interpreted as column-major banded matrices, we can use the same analysis for the banded BLAS as we used for the dense BLAS, noting that we must also always swap $K_U$ and $K_L$. \subsubsection{Packed routines} Packed routines are much simpler than banded. Here we have a triangular, symmetric or Hermitian matrix which is packed so that only the relevant triangle is stored. Thus if we have an upper triangular matrix stored in column-major packed storage, the first element holds the relevant portion of the first column of the matrix, the next two elements hold the relevant portion of the second column, etc. With an upper triangular matrix stored in row-major packed storage, the first $N$ elements hold the first row of the matrix, the next $N-1$ elements hold the next row, etc. Thus we see in the Hermitian and symmetric cases, to get a row-major packed array correctly interpreted by Fortran 77, we will simply switch the setting of {\tt UPLO}. This will mean that the rows of the matrix will be read in as the columns, but this is not a problem, as we have seen before. In the symmetric case, since $A = A^T$ the column and rows are the same, so there is obviously no problem. In the Hermitian case, we must be sure that the imaginary component of the diagonal is not used, and it assumed to be zero. However, the diagonal element in a row when our matrix is upper will correspond to the diagonal element in a column when our matrix is called lower, so this is handled as well. In the triangular cases, we will need to change both {\tt UPLO} and {\tt TRANS}, just as in the dense routines. With these ideas in mind, the analysis for the dense routines may be used unchanged for packed. \clearpage \end{document} debian/xzcblat2.10000644000000000000000000000003012217575344011004 0ustar .so man1/libblas-test.1 debian/README.Debian0000644000000000000000000001023312217575344011240 0ustar REFBLAS3 for Debian --- 20050310 -------------------------------- The cinterface.pdf file has required some editing, both for content and formatting. The user might prefer a corrected version in the older format which can be found in the atlas3-doc package under the name cblas.ps. There may be differences between these two files. As the source origins are distinct, both files are included in Debian. REFBLAS3 for Debian --- 20031222 -------------------------------- A few minor longstanding bugs in the cblas API are corrected in this release. As these are binary incompatible to a very slight degree, the soname of the library has been increased. These changes follow the behavior of atlas, which provides a binary compatible blas and cblas interface. The author of atlas was also the author of the original cblas standard. Some of these modifications are due directly to him, others have been made by me to ensure that the blas testers work correctly against both reference and atlas-provided blas libraries. The changes can be summarized as follows: 1) cblas_i?amax routines now return a value i such that 0 <= i < N, where N is the length of the array. 2) certain cblas error codes are now correctly switched or interchanged in the case of row major matrices. 3) the symbol RowMajorStrg is not longer exported by the library. The complete patch applied to effect these changes can be found in /usr/lib/blas/refblas3.patch.gz. To ease the transition, parallel source and binary packages are being provided for libblas.so.2 and libblas.so.3. As in prior releases, both refblas3 and atlas3 provide a virtual "blas3" package. Programs and packages built against any library providing this virtual package can be executed against any other at runtime. Support exists for the automatic selection at runtime of the fastest library installed which is executable on the running cpu, with said selection being effected via ld.so.conf. See the README.Debian in the atlas packages for details. All testers have been re-enabled on all architectures, which must run successfully at build time for the package to be generated. ============================================================================= Previous README.Debian ============================================================================= BLAS for Debian ---------------------- This is the Fortran 77 reference implementation of the BLAS (Basic Linear Algebra Subroutines) standard found at netlib. The C interface has been incorporated into the library as well -- see /usr/share/doc/blas-doc/cinterface.pdf. A few minor changes were made to the crotg.f and zrotg.f files to use a separate complex absolute value (c_abs.f and z_abs.f) in place of the Fortran intrinsic. This is because at the time of this writing, g77 does not supply a PIC version of libg2c. Patches to the tester programs made in the course of development of atlas have also been incorporated. By in large, the purpose of the patches is to allow correct error reporting in case of failures in the tests. The testers are dynamically linked, and can so be used to test any shared blas-compatible library, such as that provided by the atlas packages. For example, LD_LIBRARY_PATH=/usr/lib ldd /usr/lib/blas/xsblat2 (should show /usr/lib/libblas.so.2) LD_LIBRARY_PATH=/usr/lib /usr/lib/blas/xsblat2 < /usr/share/doc/blas-doc/examples/sblat2d (apt-get install atlas2-base) LD_LIBRARY_PATH=/usr/lib/atlas ldd /usr/lib/blas/xsblat2 (should show /usr/lib/atlas/libblas.so.2) LD_LIBRARY_PATH=/usr/lib/atlas /usr/lib/blas/xsblat2 < /usr/share/doc/blas-doc/examples/sblat2d When installing the atlas packages in conjunction with this blas package, your system should be setup to use the fastest blas library your system can run by default, i.e. in the absence of any LD_LIBRARY_PATH environment variable. Architecture Specific Notes: --------------------------- Due to a current loader bug on hppa, the tests on the 'error exits' of the blas routines has been removed from the suite of tests performed at compile time, and from the sample tester input files supplied in the blas-test package. -- Camm Maguire , Thu Mar 10 22:12:37 2005 debian/rules0000755000000000000000000001755312220355720010257 0ustar #!/usr/bin/make -f # xerblas_ and LAPACK_xerblas must be overrideable by applications # --dynamic-list does not work with gold, so drop the flag completely BUILDFLAGS_ENV:=DEB_LDFLAGS_MAINT_STRIP="-Wl,-Bsymbolic-functions" LDFLAGS:=$(shell $(BUILDFLAGS_ENV) dpkg-buildflags --get LDFLAGS) F77:=gfortran FFLAGS:=$(shell dpkg-buildflags --get FFLAGS) -fno-whole-file CC:=cc CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS) ARCH:=$(shell dpkg --print-architecture) CPU:=$(shell dpkg-architecture -qDEB_HOST_ARCH_CPU) ifeq ($(ARCH),alpha) FFLAGS += -mieee endif # Necessary to avoid test failures ifneq (,$(filter $(CPU),i386 m68k)) FFLAGS_EXTRA := -ffloat-store endif SO=3 VERS=$(SO).0 VN:=$(shell pwd) VO:=$(VN).orig UD:=$(shell dirname $$(pwd)) PDF:=cinterface PDD:=debian/patched-docs PDP:=$(addprefix $(PDD)/,$(PDF)) PDS:=$(addsuffix .tex,$(PDP)) PDO:=$(addsuffix .pdf,$(PDP)) # Support parallel build ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) MAKEFLAGS += -j$(NUMJOBS) endif # Rules for recreating the source tarball # TODO: fix the rules and convert them to a get-orig-source rule $(UD)/blas.tgz: mkdir -p $(@D) cd $(@D) && wget -N ftp://ftp.netlib.org/blas/$(@F) $(UD)/cblas.tgz: mkdir -p $(@D) cd $(@D) && wget -N ftp://ftp.netlib.org/blas/blast-forum/$(@F) $(UD)/manpages.tgz: mkdir -p $(@D) cd $(@D) && wget -N ftp://ftp.netlib.org/lapack/$(@F) $(VO)/src: $(UD)/blas.tgz mkdir -p $@ cd $@ && tar zxf $< TF:=s d c z TF:=$(addsuffix blat1,$(TF)) $(addsuffix blat2,$(TF)) $(addsuffix blat3,$(TF)) \ $(addsuffix blat2d,$(TF)) $(addsuffix blat3d,$(TF)) $(addprefix $(VO)/test/,$(TF)): mkdir -p $(@D) cd $(@D) && wget -N ftp://ftp.netlib.org/blas/$(@F) $(VO)/test: $(addprefix $(VO)/test/,$(TF)) $(VO)/man: $(UD)/manpages.tgz mkdir -p $(@D) cd $(VO) && tar zxf $< blas rm -rf $@ mv $(VO)/blas/man $@ rmdir $(VO)/blas $(VO)/cblas: $(UD)/cblas.tgz cd $(VO) && tar zxf $< rm -rf $@ mv $(VO)/CBLAS $@ DF:=faq.html $(addprefix $(VO)/doc/,$(DF)): mkdir -p $(@D) cd $(@D) && wget -N ftp://ftp.netlib.org/blas/$(@F) $(VO)/doc/cinterface.pdf: mkdir -p $(@D) cd $(@D) && wget -N ftp://ftp.netlib.org/blas/blast-forum/$(@F) $(VO)/doc/blue.gif: mkdir -p $(@D) cd $(@D) && wget -N ftp://ftp.netlib.org/scalapack/html/gif/$(@F) %.png: %.gif gif2png $< $(VO)/doc: $(addprefix $(VO)/doc/,$(DF)) $(VO)/doc/blue.png ori: $(addprefix $(VO)/,src test man cblas doc) # Compilation rules BSRC:=$(shell echo src/*.f) BOBJ:=$(BSRC:.f=.o) BOBJ1:=$(filter-out src/izamax.o,$(filter-out src/icamax.o,$(BOBJ))) BOBJ2:=src/icamax.o src/izamax.o debian/shared_dir debian/static_dir debian/test_dir: mkdir -p $(subst _dir,,$(@)) touch $@ $(subst src/,debian/static/,$(BOBJ1)): \ debian/static/%.o : src/%.f debian/static_dir $(F77) $(FFLAGS) -c $< -o $@ $(subst src/,debian/shared/,$(BOBJ1)): \ debian/shared/%.o : src/%.f debian/shared_dir $(F77) $(FFLAGS) -fPIC -c $< -o $@ $(subst src/,debian/static/,$(BOBJ2)): \ debian/static/%.o : src/%.f debian/static_dir $(F77) $(FFLAGS) $(FFLAGS_EXTRA) -c $< -o $@ $(subst src/,debian/shared/,$(BOBJ2)): \ debian/shared/%.o : src/%.f debian/shared_dir $(F77) $(FFLAGS) $(FFLAGS_EXTRA) -fPIC -c $< -o $@ libblas.a: cblas/libcblas.a $(subst src/,debian/static/,$(BOBJ)) debian/static_dir cd debian/static && ar x ../../$< ar r $@ debian/static/*.o libblas.so.$(VERS): cblas/libcblas_pic.a $(subst src/,debian/shared/,$(BOBJ)) debian/shared_dir cd debian/shared && ar x ../../$< $(F77) $(LDFLAGS) -shared -Wl,-soname=libblas.so.$(SO) -o $@ debian/shared/*.o libblas.so.$(SO): libblas.so.$(VERS) ln -snf $< $@ libblas.so: libblas.so.$(SO) ln -snf $< $@ cblas/Makefile.in: cblas/Makefile.LINUX cat $< | sed -e "s,^BLLIB = .*,BLLIB = -L $$(pwd) -lblas,1" \ -e "s,^CBDIR = .*,CBDIR = $$(pwd)/cblas,1" \ -e "s,^CC = .*,CC = $(CC) ,1" \ -e "s,^FC = .*,FC = $(F77) ,1" \ -e "s,^CFLAGS = .*,CFLAGS = $(CPPFLAGS) $(CFLAGS) \$$(PICOPTS) -DADD_,1" \ -e "s,^FFLAGS = .*,FFLAGS = $(FFLAGS) \$$(PICOPTS) ,1" \ >$@ echo "LOADFLAGS = $(LDFLAGS)" >>$@ cblas/libcblas.a: cblas/Makefile.in cd $(@D) && $(MAKE) cleanobj cd $(@D) && $(MAKE) rmlib mkdir -p cblas/lib/LINUX cd $(@D) && $(MAKE) alllib cp cblas/lib/LINUX/cblas_LINUX.a $@ cblas/libcblas_pic.a: cblas/Makefile.in cd $(@D) && $(MAKE) cleanobj cd $(@D) && $(MAKE) rmlib mkdir -p cblas/lib/LINUX cd $(@D) && $(MAKE) PICOPTS=-fPIC alllib cp cblas/lib/LINUX/cblas_LINUX.a $@ BIN:=s d c z BIN:=$(addsuffix cblat1,$(BIN)) $(addsuffix cblat2,$(BIN)) $(addsuffix cblat3,$(BIN)) BIN:=$(addprefix cblas/testing/x,$(BIN)) $(BIN): libblas.so cd cblas && $(MAKE) alltst CBLIB= FBN:=s d c z FBN:=$(addsuffix blat1,$(FBN)) $(addsuffix blat2,$(FBN)) $(addsuffix blat3,$(FBN)) FBN:=$(addprefix test/x,$(FBN)) test/%.f: test/% cp $< $@ test/x%: test/%.f libblas.so $(F77) $(FFLAGS) $(LDFLAGS) -o $@ $< -L $$(pwd) -lblas OUT:=$(subst cblas/testing/,debian/test/,$(BIN)) OUT1:=$(filter %1,$(OUT)) OUT23:=$(filter-out %1,$(OUT)) $(OUT1): \ debian/test/%: cblas/testing/% debian/test_dir libblas.so LD_LIBRARY_PATH=$$(pwd):$$LD_LIBRARY_PATH $< > $@ awk '/fail/ || /FAIL/ {exit 1}' $@ || (cat $@ && false) $(OUT23): \ debian/test/%: cblas/testing/% debian/test_dir libblas.so LD_LIBRARY_PATH=$$(pwd):$$LD_LIBRARY_PATH $< \ < cblas/testing/$(subst x,,$(subst cblat,in,$*)) > $@ awk '/fail/ || /FAIL/ {exit 1}' $@ || (cat $@ && false) FOT:=$(subst test/,debian/test/,$(FBN)) FOT1:=$(filter %1,$(FOT)) FOT23:=$(filter-out %1,$(FOT)) $(FOT1): \ debian/test/%: test/% debian/test_dir libblas.so LD_LIBRARY_PATH=$$(pwd):$$LD_LIBRARY_PATH $< > $@ awk '/fail/ || /FAIL/ {exit 1}' $@ || (cat $@ && false) $(FOT23): \ debian/test/%: test/% debian/test_dir libblas.so rm -f *.SUMM LD_LIBRARY_PATH=$$(pwd):$$LD_LIBRARY_PATH $< \ < test/$(subst x,,$*)d cat *.SUMM >$@ awk '/fail/ || /FAIL/ {exit 1}' $@ || (cat $@ && false) debian/test_results: $(OUT) $(FOT) cat $^ > $@ cat $@ | awk '/fail/ || /FAIL/ {exit 1}' MFL:=$(shell echo man/manl/*) %.3: %.l cat $< | sed "s,^.TH *\([^ ]*\) *l *\(.*\),.TH \1 3 \2,1" >$@ echo Converted $< to $@, diff: diff -u $< $@ || true MF:=$(subst .l,.3,$(MFL)) $(PDO): %.pdf: %.tex cd $(@D) && pdflatex $( on Tue, 28 Sep 1999 15:48:36 -0400. It was downloaded from http://www.netlib.org/blas/ Copyright: This software is in the public domain blas_1.2.orig.tar.gz was repackaged to remove the following files for which no sources were available: blas2-paper.ps blas3-paper.ps blasqr.ps cinterface.pdf Note that a new cinterface.pdf is generated from a patched cinterface.tex source file in the debian/patched-docs directory. debian/xscblat1.10000644000000000000000000000003012217575344010774 0ustar .so man1/libblas-test.1 debian/xdcblat1.10000644000000000000000000000003012217575344010755 0ustar .so man1/libblas-test.1 debian/xzblat2.10000644000000000000000000000003012217575344010641 0ustar .so man1/libblas-test.1 debian/libblas-dev.prerm0000644000000000000000000000022112217575344012426 0ustar #!/bin/sh set -e if [ "$1" != "upgrade" ] then update-alternatives --remove libblas.so /usr/lib/libblas/libblas.so fi #DEBHELPER# exit 0 debian/libblas3gf.postinst0000644000000000000000000000041012217575344013010 0ustar #! /bin/sh set -e # For the transition libblas3gf => libblas3 update-alternatives --remove libblas.so.3gf /usr/lib/libblas/libblas.so.3 # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/libblas3.preinst0000644000000000000000000000041212217575344012276 0ustar #! /bin/sh set -e # For the transition libblas3gf => libblas3 update-alternatives --remove libblas.so.3gf /usr/lib/libblas/libblas.so.3 # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/xscblat2.10000644000000000000000000000003012217575344010775 0ustar .so man1/libblas-test.1 debian/xcblat1.10000644000000000000000000000003012217575344010611 0ustar .so man1/libblas-test.1 debian/libblas3.postinst0000644000000000000000000000051112217575344012475 0ustar #! /bin/sh set -e update-alternatives --install /usr/lib/libblas.so.3 libblas.so.3 /usr/lib/libblas/libblas.so.3 10 \ --slave /usr/lib/libblas.so.3gf libblas.so.3gf /usr/lib/libblas/libblas.so.3 # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/libblas3.install0000644000000000000000000000003612217606753012261 0ustar libblas.so.* usr/lib/libblas/ debian/xccblat3.10000644000000000000000000000003012217575344010756 0ustar .so man1/libblas-test.1 debian/xdblat1.10000644000000000000000000000003012217575344010612 0ustar .so man1/libblas-test.1 debian/changelog0000644000000000000000000004546612220356362011060 0ustar blas (1.2.20110419-7) unstable; urgency=low * Make sure that -mieee is used when compiling on alpha * Restore -fno-whole-file and -ffloat-store (the latter only for *-i386 and m68k, and only for some files), otherwise some tests break -- Sébastien Villemot Tue, 24 Sep 2013 20:41:52 +0200 blas (1.2.20110419-6) unstable; urgency=low * Use my @debian.org address * Remove obsolete DM-Upload-Allowed flag * Bump to debhelper compat level 9 * Remove pre-squeeze Conflicts/Replaces/Provides * Use quilt to manage the patch to upstream sources * Rewrite debian/rules using dh * Test programs are now installed under /usr/lib/libblas, for consistency with the library objects * Inject flags from dpkg-buildflags (Closes: #700495) * Switch VCS to git * Improve long description of libblas-test * Bump to Standards-Version 3.9.4, no changes needed * Ship in libblas-test a script for running all BLAS tests * Register cinterface.pdf into doc-base, and fix the doc-base section for the BLAS FAQ -- Sébastien Villemot Mon, 23 Sep 2013 18:56:25 +0200 blas (1.2.20110419-5) unstable; urgency=low * libblas3gf.prerm: avoid crash if libblas.so.3gf already deleted * libblas-test: put in devel/extra to reflect override -- Sébastien Villemot Fri, 29 Jun 2012 18:37:36 +0000 blas (1.2.20110419-4) unstable; urgency=low * libblas3.prerm: avoid crash if libblas.so.3gf already deleted * Indicate that libblas3 conflicts with octave3.2 (Closes: #677399) * libblas3gf transitional package: + move to oldlibs section (Closes: #679104) + mark as arch:all * Add myself to Uploaders * Set DM-Upload-Allowed to yes -- Sébastien Villemot Sun, 24 Jun 2012 16:13:14 +0000 blas (1.2.20110419-3) unstable; urgency=low * Upload in unstable -- Sylvestre Ledru Sat, 02 Jun 2012 17:32:35 +0200 blas (1.2.20110419-3~exp8) experimental; urgency=low * Rollback previous upload -- Sylvestre Ledru Fri, 01 Jun 2012 11:04:21 +0200 blas (1.2.20110419-3~exp7) experimental; urgency=low * Fix a bad alternative link to the old library name -- Sylvestre Ledru Fri, 01 Jun 2012 10:27:10 +0200 blas (1.2.20110419-3~exp6) experimental; urgency=low * Replaces and Breaks updated against the right versions of other impacted packages -- Sylvestre Ledru Sun, 20 May 2012 17:20:39 +0200 blas (1.2.20110419-3~exp5) experimental; urgency=low * Moved removal from postinst to preinst -- Sylvestre Ledru Fri, 18 May 2012 16:01:51 +0200 blas (1.2.20110419-3~exp4) experimental; urgency=low * Remove libblas.so.3gf references before the install (Closes: #659784) -- Sylvestre Ledru Mon, 14 May 2012 18:29:00 +0200 blas (1.2.20110419-3~exp3) experimental; urgency=low * Join modifications with blas, lapack, atlas and openblas. Declare the replacements of all *3gf blas & lapack implementation (See bug #660607) * Standards-Version updated to version 3.9.3 * -fwhole-file, default from gfortran 4.6, is breaking the blas tests. Bring back the previous behavior with -fno-whole-file * Update of the desc -- Sylvestre Ledru Tue, 10 Apr 2012 21:10:42 +0200 blas (1.2.20110419-3~exp2) experimental; urgency=low * Bring back libblas3gf as transitionnal package * Drop the previous alternative before installing the new one (Closes: #659784) * Drop the forced version of gcc (Closes: #654723) -- Sylvestre Ledru Sun, 19 Feb 2012 12:02:10 +0100 blas (1.2.20110419-3~exp1) experimental; urgency=low * Rename libblas3gf package => libblas3 * Rename libblas.so.3gf => libblas.so.3 * Fix postinst-has-useless-call-to-ldconfig & postrm-has-useless-call-to-ldconfig * Fix debian-rules-missing-recommended-target build-arch -- Sylvestre Ledru Sun, 04 Sep 2011 14:42:02 +0200 blas (1.2.20110419-2) unstable; urgency=low * Force the version 4.5 of gcc to fix a failing test (Closes: #625723) * -O3 is set back for amd64 (Closes: #569436) -- Sylvestre Ledru Wed, 10 Aug 2011 23:32:26 +0200 blas (1.2.20110419-1) unstable; urgency=low * New upstream release - Fix the FTBFS due to changes in the returned values (Closes: #625723) (LP: #765998) * Switch to dpkg-source 3.0 (quilt) format * Standards-Version updated to version 3.9.2 -- Sylvestre Ledru Fri, 05 Aug 2011 00:40:45 +0200 blas (1.2-8) unstable; urgency=low [ Kumar Appaiah ] * Use 'findstring' in rules file to search for amd64 within architecture string to use -O2 as FFLAGS. (Closes: #598876) -- Sylvestre Ledru Tue, 05 Oct 2010 15:08:35 +0200 blas (1.2-7) unstable; urgency=low * Remove the old alternatives (Closes: #576801) -- Sylvestre Ledru Wed, 07 Apr 2010 14:50:51 +0200 blas (1.2-6) unstable; urgency=low * Upload into unstable -- Sylvestre Ledru Tue, 06 Apr 2010 10:21:37 +0200 blas (1.2-5) experimental; urgency=low * postinst & prerm added for each packages to manage update-alternatives See: http://wiki.debian.org/DebianScience/LinearAlgebraLibraries -- Sylvestre Ledru Wed, 03 Mar 2010 15:03:49 +0100 blas (1.2-4) unstable; urgency=low * -O3 => -O2 under amd64 until we find a real fix for #569436 * Disable also the need of gcc-4.3 for alpha (Closes: #570668) -- Sylvestre Ledru Thu, 25 Feb 2010 23:01:32 +0100 blas (1.2-3) unstable; urgency=low * Update to Standards-version 3.8.4 * Package moved to debian-science * Tags Homepage, Vcs-Svn and Vcs-Browser added * Myself added to uploaders and remove MIA other maintainers (Closes: ##550411) * XS-DM-Upload-Allowed removed * Typo fixed * ${misc:Depends} added on packages * Explicit dependency on gcc 4.3 removed (Closes: #533807) -- Sylvestre Ledru Wed, 10 Feb 2010 15:32:37 +0100 blas (1.2-2) unstable; urgency=low * Maintainer changed to Debian Scientific Computing Team * Camm Maguire and Ondrej Certik added to uploaders * XS-DM-Upload-Allowed: yes field added -- Ondrej Certik Thu, 17 Jul 2008 22:07:23 +0200 blas (1.2-1.6) unstable; urgency=low * Build using the default gcc/gfortran compilers except on alpha. * On architectures with internal floating point precision higher than that of the variables (such as 68000, x86) files src/icamax.f and src/izamax.f must necessarily be compiled with -ffloat-store option. Otherwise the corresponding functions do not perform to their specification and the corresponding blas level 1 tests fail. Don't build the whole library with -ffloat-store. Suggested by Konstantin L. Metlov in Launchpad. Closes: #202869. LP: #202869. * Fix bashisms in debian/rules. Closes: #484373. -- Matthias Klose Fri, 13 Jun 2008 17:08:36 +0200 blas (1.2-1.5) unstable; urgency=medium * Link using gfortran instead of gcc. * Always build with -g. * Build cblas with compiler options choosen in debian/rules. -- Matthias Klose Mon, 04 Feb 2008 18:18:51 +0100 blas (1.2-1.4) unstable; urgency=low * debian/shlibs.local: s/atlas3gf-base/libatlas3gf-base/. -- Matthias Klose Sun, 03 Feb 2008 23:30:56 +0000 blas (1.2-1.3) unstable; urgency=low * Link using gcc-4.3. * Fix parameter for dh_makeshlibs (libatlas3gf-base). * debian/*.files: Add new library sonames. -- Matthias Klose Sat, 19 Jan 2008 20:55:31 +0100 blas (1.2-1.2) experimental; urgency=low * Explicitely build using gfortran-4.3. * Only build with -ffloat-store on ix86 architectures. -- Matthias Klose Sat, 19 Jan 2008 19:43:45 +0100 blas (1.2-1.1) experimental; urgency=low * Non-maintainer upload. [ Kumar Appaiah ] * Remove the double to float converstion patch in c_cblas1.c. * Remove unnecessary patches directory. [ Colin Tuckley ] * Update to debhelper compat level 5 (No changes required). * change libblas-dev to section libdevel in debian/control. * remove doc/*.ps and doc/*.pdf from .orig.tar.gz (no source provided). -- Colin Tuckley Tue, 15 Jan 2008 16:55:20 +0000 blas (1.2-1) experimental; urgency=low * pass opt flags to cblas makefile * bump soname as gfortran libs are binary incompatible with g77 libs * package renaming * isolate upstream patches in blas.patch -- Camm Maguire Fri, 26 Oct 2007 12:30:24 -0400 refblas3 (1.2-9) experimental; urgency=low * Acknowledge NMU * Restore development alternative Provides in -dev package * virtual package naming scheme libblasgf .... * remove ffloat-store * #include and #include in cblas_f77.h * Work around excess precision test errors via the inlined function call suggested by Bart Oldeman . If this proves non-robust, we can revert to -ffloat-store on izamax.f only. remove Debian specific dcabs1 helper external. * Newer standards * dh_installman * clean refblas3-test manpage. * remove g77 substvar * Bug fix: "refblas3-dev: should not depend on g77", thanks to Bernd Zeimetz (Closes: #413402). link libgfortran into libblas, remove dependence of -dev package on gfortran. * Bug fix: "refblas3-dev: should not depend on libc6-dev", thanks to Martin Koeppe (Closes: #440877). remove dep -- Camm Maguire Thu, 25 Oct 2007 10:48:09 -0400 refblas3 (1.2-8.1) experimental; urgency=low * Non-maintainer upload. * gfortran transition upload to experimental * use -ffloat-store to workaround testsuite getting confused from extra precision bits... * use binary:Version to enable safe binNMU's * build-depend on texlive-latex-recommended instead of tetex-extra * global refblas3 -> refblas3gf replace -- Riku Voipio Mon, 20 Aug 2007 20:10:18 +0300 refblas3 (1.2-8) unstable; urgency=high * Build depend on tetex-extra to get fancyvrb.sty. -- Camm Maguire Fri, 11 Mar 2005 11:07:48 +0000 refblas3 (1.2-7) unstable; urgency=high * Bug fix: "refblas3-doc: blas3-paper.gs.gz is garbled", thanks to Jochen Voss (Closes: #253922). Run blas3-paper.ps through psselect -r and then ps2ps, store locally in debian/. * Bug fix: "refblas3-doc: cinterface.pdf.gz should be replaced by cblas.ps.gz from atlas3-doc", thanks to Jochen Voss (Closes: #254091). Fix formatting in cinterface.tex so that verbatim text fits within margins. Use fancyvrb to set a small fontsize, and widen horizontal margins. Run pdflatex twice in rules to generate section numbers. Refer to cblas.ps in atlas3-doc in README.Debian. -- Camm Maguire Thu, 10 Mar 2005 22:10:02 +0000 refblas3 (1.2-6) unstable; urgency=low * Added slave link in -dev package alternative to static version of the lib * Changed section numbers in manpages from l to 3 for lintian -- Camm Maguire Tue, 1 Jun 2004 17:08:37 +0000 refblas3 (1.2-5) unstable; urgency=low * Added Build-dep on tetex-bin: Closes: #227932. -- Camm Maguire Thu, 15 Jan 2004 17:43:09 +0000 refblas3 (1.2-4) unstable; urgency=low * Corrected mistake in source to cinterface.pdf found in the blas-report.tgz file on upstream website, recompiled, and modified rules to overwrite with the new version. * Renamed doc-base to refblas3-doc -- Camm Maguire Tue, 13 Jan 2004 17:08:58 +0000 refblas3 (1.2-3) unstable; urgency=low * Really release into unstable -- Camm Maguire Mon, 12 Jan 2004 14:09:34 +0000 refblas3 (1.2-2) experimental; urgency=low * Rename virtual packages provided to libblas.so.3 and libblas-3.so * Release into unstable -- Camm Maguire Wed, 7 Jan 2004 19:35:20 +0000 refblas3 (1.2-1) experimental; urgency=low * Minor change in upstream API leads to soname and package name changes to blas3. Clint Whaley, the author of the original cblas standard, has fixed the following long standing errors in the reference cblas implementation, which are now required if consistency with the latest atlas implementations is to be achieved. 1) cblas_i?amax routines now return a value i such that 0 <= i < N, where N is the lenght of the array. 2) certain cblas error codes are now correctly switched or interchanged in the case of row major matrices. 3) the symbol RowMajorStrg is not longer exported by the library. * gcc-3.3 all arches * debhelper compat level 4 * Restore error code tester on hppa -- Camm Maguire Mon, 22 Dec 2003 18:16:17 -0500 blas (1.1-11) unstable; urgency=low * Declare cabs1/dcabs1 volatile to ensure proper precision comparisons in icamax/izamax, Closes: #185838 * removed dcabs1 manpage - not part of api * Added NAME fields to zscal, cscal, and zrotg manpages * versioned Build-depend on debhelper * standards update to 3.5.9 -- Camm Maguire Sat, 19 Apr 2003 14:37:36 +0000 blas (1.1-10) unstable; urgency=low * ${g77} added to Depends of blas-dev, Closes: #113086 -- Camm Maguire Mon, 28 Oct 2002 18:53:44 -0500 blas (1.1-9) unstable; urgency=high * blas-dev section is devel * libblas2.so alternative support -- Camm Maguire Sun, 31 Mar 2002 16:26:09 -0500 blas (1.1-8) unstable; urgency=high * Arch dependent patch mechanism * Omit error exit tests at package build time from hppa due to loader bug on this platorm * README.Debian about the hppa loader bug preventing successful tests of 'error exits' -- Camm Maguire Thu, 28 Mar 2002 00:26:15 -0500 blas (1.1-7) unstable; urgency=low * CC variable in rules -> GCC * Changed wrapper prototypes in cblas/testing/c_{s,c}blas1.c to return double where function originally returned float. This is apparently necessary for C routines to make them correctly callable from g77 fortran (as alluded to in g77 info manual) -- Camm Maguire Fri, 1 Mar 2002 16:02:56 -0500 blas (1.1-6) unstable; urgency=low * Conflicts/Replaces on versioned atlas2-headers, Closes: #135610 -- Camm Maguire Sun, 24 Feb 2002 22:48:07 -0500 blas (1.1-5) unstable; urgency=low * g77-3.0 for mips and mipsel -- Camm Maguire Wed, 20 Feb 2002 17:07:57 -0500 blas (1.1-4) unstable; urgency=low * Prepend instead of cloberring LD_LIBRARY_PATH, Closes: #134517 * Conflicts/replaces for blas-dev on atlas2-dev (<= 3.0-8), Closes: #134559 -- Camm Maguire Mon, 18 Feb 2002 11:41:40 -0500 blas (1.1-3) unstable; urgency=low * Made directories under Debian correctly, Closes: #134326 -- Camm Maguire Sun, 17 Feb 2002 11:09:34 -0500 blas (1.1-2) unstable; urgency=low * ORed construction in shlibs and shlibs.local: libblas 2 atlas2-base | blas | blas2 -- Camm Maguire Fri, 15 Feb 2002 23:43:34 -0500 blas (1.1-1) unstable; urgency=low * New maintainer * Renamed package to blas1 to blas * blas2-dev virtual package * Incorporated cblas into libblas * Added tester programs in blas-test package * Added documentation from website * Incorporated manpages, blas-doc now built from blas source * Documented that this is the ref. implementation, Closes: #103107 * Short description lines, Closes: #119949, Closes: #131008 * Accept NMU re: complex abs, Closes: #101635 * Accept NMU re: faq referencing internet image, convert to png, Closes: #65259 * Short description lines, Closes: #130939 * Short description lines, Closes: #130973 * Removing xerbla and lsame manpages from lapack-doc, Closes: #61236 -- Camm Maguire Wed, 13 Feb 2002 13:51:44 -0500 blas (1.0-9) unstable; urgency=low * NMU, with maintainer permission * Revert to gcc for final shared link, clearing lintian error, and enabling programs linking against the blas to refrain from expecting libg2c functions in blas equivalents, such as those provided by atlas. * Add z_abs.f and c_abs.f, as well as change crotg.f and zrotg.f to use them, to make the above possible -- Camm Maguire Tue, 21 Aug 2001 14:13:02 -0400 blas (1.0-8) unstable; urgency=low * NMU, with maintainer permission * Put virtual package blas2 in dependency field of shlibs file -- Camm Maguire Fri, 20 Jul 2001 15:36:34 -0400 blas (1.0-7) unstable; urgency=low * NMU, with permission from maintainer * Link with g77 instead of gcc to compile in c_abs et. al. fortran intrinsics, Closes: #101635 * Support for blas2 virtual package * Removed images from faq.html, Closes: #65259 * Added Section: devel to source section of control, clearing lintian error * Todo: linking with g77 puts in static non-fPIC code into shared library, an unavoidable lintian error -- Camm Maguire Tue, 10 Jul 2001 23:02:31 -0400 blas (1.0-6) unstable; urgency=low * Found right compile options so no longer needs f2c on the alpha * Changes relating to above should closes: #92289 -- James A. Treacy Fri, 30 Mar 2001 11:54:20 -0400 blas (1.0-5) unstable; urgency=low * Fixed Build-Depends line: closes: #92062 -- James A. Treacy Thu, 29 Mar 2001 11:54:20 -0400 blas (1.0-4) unstable; urgency=low * Grrrr. replaced 'alpha' with 'any' in control file * Add f2c as a dependency for the alpha. closes: #71516, #72356 * Added Build-Depends line -- James A. Treacy Mon, 26 Mar 2001 11:54:20 -0400 blas (1.0-3.2) frozen; urgency=low * Non-maintainer upload, replaced 'any' with 'alpha' in control file -- Camm Maguire Wed, 12 Jan 2000 15:51:47 +0100 blas (1.0-3.1) frozen; urgency=low * Non-maintainer upload, enables compilation on alpha with g77 2.95.2. Fortan routines calling cabs1 or abs1 must be compiled with f2c and then gcc with this (current) version of the compiler. -- Camm Maguire Wed, 12 Jan 2000 15:51:47 +0100 blas (1.0-3) unstable; urgency=low * set the lib version to 2 so current apps don't break -- James A. Treacy Fri, 29 Oct 1999 11:54:20 -0400 blas (1.0-2) unstable; urgency=low * Corrected shlibs file. Fixes Bug #48464 * Conflicts with old lapack packages. Fixes Bug #46556 -- James A. Treacy Wed, 27 Oct 1999 12:19:55 -0400 blas (1.0-1) unstable; urgency=low * Initial Release. This package separates BLAS from the lapack package. -- James A. Treacy Tue, 28 Sep 1999 15:48:36 -0400 debian/run_all_blas_tests.sh0000755000000000000000000000152612220065763013413 0ustar #!/bin/sh # This scripts runs all BLAS tests against the BLAS implementation currently # selected through the alternatives system # (see "update-alternatives --display libblas.so.3"). PATH=$PATH:/usr/lib/libblas EXDIR=/usr/share/doc/libblas-test/examples/ rm -f *.SUMM xccblat1 xccblat2 < $EXDIR/cin2 xccblat3 < $EXDIR/cin3 xcblat1 xcblat2 < $EXDIR/cblat2d cat CBLAT2.SUMM xcblat3 < $EXDIR/cblat3d cat CBLAT3.SUMM xdcblat1 xdcblat2 < $EXDIR/din2 xdcblat3 < $EXDIR/din3 xdblat1 xdblat2 < $EXDIR/dblat2d cat DBLAT2.SUMM xdblat3 < $EXDIR/dblat3d cat DBLAT3.SUMM xscblat1 xscblat2 < $EXDIR/sin2 xscblat3 < $EXDIR/sin3 xsblat1 xsblat2 < $EXDIR/sblat2d cat SBLAT2.SUMM xsblat3 < $EXDIR/sblat3d cat SBLAT3.SUMM xzcblat1 xzcblat2 < $EXDIR/zin2 xzcblat3 < $EXDIR/zin3 xzblat1 xzblat2 < $EXDIR/zblat2d cat ZBLAT2.SUMM xzblat3 < $EXDIR/zblat3d cat ZBLAT3.SUMM debian/libblas-doc.doc-base.faq0000644000000000000000000000044012220070404013473 0ustar Document: libblas-doc.faq Title: BLAS FAQ Author: J. Dongarra, et. al. Abstract: Frequently asked Questions about the BLAS Section: Science/Mathematics Format: HTML Index: /usr/share/doc/libblas-doc/faq.html Files: /usr/share/doc/libblas-doc/faq.html /usr/share/doc/libblas-doc/blue.png debian/libblas-dev.postinst0000644000000000000000000000076412217575344013200 0ustar #! /bin/sh set -e update-alternatives --install /usr/lib/libblas.so libblas.so /usr/lib/libblas/libblas.so 10 \ --slave /usr/lib/libblas.a libblas.a /usr/lib/libblas/libblas.a # Remove previous (deprecated) alternatives # See bug #576801 update-alternatives --remove libblas-3gf.so /usr/lib/libblas.so update-alternatives --remove libblas-3gf.a /usr/lib/libblas.a # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/xzblat3.10000644000000000000000000000003012217575344010642 0ustar .so man1/libblas-test.1