aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjulie <julielangou@users.noreply.github.com>2011-06-24 08:46:19 +0000
committerjulie <julielangou@users.noreply.github.com>2011-06-24 08:46:19 +0000
commitb39d1348c9fd0f341e3bf56014a45df82963c314 (patch)
tree3fbc9d3cd2c724c8941c6de3837c202f81557f94
parent48544278b3504cd601d3b38a3ba6086c062fe2bb (diff)
First try to get a nice script to analyze the LAPACK testing.
Below is the help that goes with it. Please send feedback. I tired to include several levels of output and several kind of errors So far, I just tested it on my machine, that has no major problems. I just tested "numerical errors", not "illegal error" neither "info error". The goal is to have our nightly testing use it and also users. TO DO: - Test other kinds of errors on machines - See to include it in ctest and buildbot (need to contact Don and Brad/Chuck) - See if a type of error option is required. ./lapack_testing.py [-h|--help] [-s |--short] [-f |--file] [-e |--error] [-p p |--prec p] [-t test |--test test] [-n | --number] - h is to print this message - f is to use directly the output of the LAPACK testing (.out files). By default, the script will run all the LAPACK tests LEVEL OF OUTPUT - x is to print a detailed summary - e is to print only the error summary - s is to print a short summary - n is to print the numbers of failing tests (turn on summary mode) SECLECTION OF TESTS: - p [s/c/d/z] is to indicate the PRECISION to run: s=single d=double c=complex z=double complex x=all [DEFAULT] - t [lin/eig/mixed/rfp/all] is to indicate which TEST FAMILY to run: lin=Linear Equation eig=Eigen Problems mixed=mixed-precision rfp=rfp format all=all tests [DEFAULT] EXAMPLES: ./lapack_testing.py -n -f Will return the numbers of failed tests by analyzing the LAPACK output ./lapack_testing.py -n -f -p s Will return the numbers of failed tests in REAL precision by analyzing the LAPACK output ./lapack_testing.py -n -f -p s -t eig Will return the numbers of failed tests in REAL precision by analyzing only the LAPACK output of EIGEN testings Written by Julie Langou (June 2011)
-rw-r--r--TESTING/EIG/alasmg.f2
-rw-r--r--TESTING/EIG/alasum.f2
-rw-r--r--TESTING/EIG/alasvm.f2
-rw-r--r--TESTING/EIG/cchkec.f2
-rw-r--r--TESTING/EIG/dchkec.f2
-rw-r--r--TESTING/EIG/dlasum.f4
-rw-r--r--TESTING/EIG/schkec.f2
-rw-r--r--TESTING/EIG/slasum.f4
-rw-r--r--TESTING/EIG/zchkec.f2
-rw-r--r--TESTING/LIN/alasum.f2
-rw-r--r--TESTING/LIN/alasvm.f2
-rw-r--r--TESTING/LIN/cdrvrf1.f4
-rw-r--r--TESTING/LIN/cdrvrf2.f4
-rw-r--r--TESTING/LIN/cdrvrf3.f4
-rw-r--r--TESTING/LIN/cdrvrf4.f4
-rw-r--r--TESTING/LIN/ddrvab.f2
-rw-r--r--TESTING/LIN/ddrvac.f2
-rw-r--r--TESTING/LIN/ddrvrf1.f4
-rw-r--r--TESTING/LIN/ddrvrf2.f4
-rw-r--r--TESTING/LIN/ddrvrf3.f4
-rw-r--r--TESTING/LIN/ddrvrf4.f4
-rw-r--r--TESTING/LIN/sdrvrf1.f4
-rw-r--r--TESTING/LIN/sdrvrf2.f4
-rw-r--r--TESTING/LIN/sdrvrf3.f4
-rw-r--r--TESTING/LIN/sdrvrf4.f4
-rw-r--r--TESTING/LIN/zdrvab.f2
-rw-r--r--TESTING/LIN/zdrvac.f2
-rw-r--r--TESTING/LIN/zdrvrf1.f2
-rw-r--r--TESTING/LIN/zdrvrf3.f2
-rw-r--r--TESTING/LIN/zdrvrf4.f4
-rwxr-xr-xTESTING/lapack_testing.py288
31 files changed, 333 insertions, 45 deletions
diff --git a/TESTING/EIG/alasmg.f b/TESTING/EIG/alasmg.f
index d7148d5d..be0000e6 100644
--- a/TESTING/EIG/alasmg.f
+++ b/TESTING/EIG/alasmg.f
@@ -49,7 +49,7 @@
9999 FORMAT( 1X, A3, ': ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9998 FORMAT( /1X, 'All tests for ', A3,
- $ ' routines passed the threshold (', I6, ' tests run)' )
+ $ ' routines passed the threshold ( ', I6, ' tests run)' )
9997 FORMAT( 6X, I6, ' error messages recorded' )
RETURN
*
diff --git a/TESTING/EIG/alasum.f b/TESTING/EIG/alasum.f
index fef7459f..057da15e 100644
--- a/TESTING/EIG/alasum.f
+++ b/TESTING/EIG/alasum.f
@@ -49,7 +49,7 @@
9999 FORMAT( 1X, A3, ': ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9998 FORMAT( /1X, 'All tests for ', A3,
- $ ' routines passed the threshold (', I6, ' tests run)' )
+ $ ' routines passed the threshold ( ', I6, ' tests run)' )
9997 FORMAT( 6X, I6, ' error messages recorded' )
RETURN
*
diff --git a/TESTING/EIG/alasvm.f b/TESTING/EIG/alasvm.f
index 67e949ce..123e2183 100644
--- a/TESTING/EIG/alasvm.f
+++ b/TESTING/EIG/alasvm.f
@@ -49,7 +49,7 @@
9999 FORMAT( 1X, A3, ' drivers: ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9998 FORMAT( /1X, 'All tests for ', A3, ' drivers passed the ',
- $ 'threshold (', I6, ' tests run)' )
+ $ 'threshold ( ', I6, ' tests run)' )
9997 FORMAT( 14X, I6, ' error messages recorded' )
RETURN
*
diff --git a/TESTING/EIG/cchkec.f b/TESTING/EIG/cchkec.f
index 5b7a7aa2..2eab1c41 100644
--- a/TESTING/EIG/cchkec.f
+++ b/TESTING/EIG/cchkec.f
@@ -116,7 +116,7 @@
9996 FORMAT( ' Error in CTRSEN: RMAX =', 3E12.3, / ' LMAX = ',
$ 3I8, ' NINFO=', 3I8, ' KNT=', I8 )
9995 FORMAT( / 1X, 'All tests for ', A3,
- $ ' routines passed the threshold (', I6, ' tests run)' )
+ $ ' routines passed the threshold ( ', I6, ' tests run)' )
9994 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition',
$ ' estimation routines', / ' CTRSYL, CTREXC, CTRSNA, CTRSEN',
$ / )
diff --git a/TESTING/EIG/dchkec.f b/TESTING/EIG/dchkec.f
index 6088a313..1b57c8a8 100644
--- a/TESTING/EIG/dchkec.f
+++ b/TESTING/EIG/dchkec.f
@@ -167,7 +167,7 @@
9991 FORMAT( ' Error in DLAQTR: RMAX =', D12.3, / ' LMAX = ', I8, ' N',
$ 'INFO=', I8, ' KNT=', I8 )
9990 FORMAT( / 1X, 'All tests for ', A3, ' routines passed the thresh',
- $ 'old (', I6, ' tests run)' )
+ $ 'old ( ', I6, ' tests run)' )
9989 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition estim',
$ 'ation routines', / ' DLALN2, DLASY2, DLANV2, DLAEXC, DTRS',
$ 'YL, DTREXC, DTRSNA, DTRSEN, DLAQTR', / )
diff --git a/TESTING/EIG/dlasum.f b/TESTING/EIG/dlasum.f
index 38dde1a0..fa02cace 100644
--- a/TESTING/EIG/dlasum.f
+++ b/TESTING/EIG/dlasum.f
@@ -23,10 +23,10 @@
$ ' tests failed to pass the threshold'
ELSE
WRITE( IOUNIT, FMT = 9998 )'All tests for ', TYPE,
- $ ' passed the threshold (', NRUN, ' tests run)'
+ $ ' passed the threshold ( ', NRUN, ' tests run)'
END IF
9999 FORMAT( 1X, A3, A2, I4, A8, I5, A35 )
- 9998 FORMAT( / 1X, A14, A3, A23, I5, A11 )
+ 9998 FORMAT( / 1X, A14, A3, A24, I5, A11 )
RETURN
*
* End of DLASUM
diff --git a/TESTING/EIG/schkec.f b/TESTING/EIG/schkec.f
index 08b4699a..7fe98f4e 100644
--- a/TESTING/EIG/schkec.f
+++ b/TESTING/EIG/schkec.f
@@ -167,7 +167,7 @@
9991 FORMAT( ' Error in SLAQTR: RMAX =', E12.3, / ' LMAX = ', I8, ' N',
$ 'INFO=', I8, ' KNT=', I8 )
9990 FORMAT( / 1X, 'All tests for ', A3, ' routines passed the thresh',
- $ 'old (', I6, ' tests run)' )
+ $ 'old ( ', I6, ' tests run)' )
9989 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition estim',
$ 'ation routines', / ' SLALN2, SLASY2, SLANV2, SLAEXC, STRS',
$ 'YL, STREXC, STRSNA, STRSEN, SLAQTR', / )
diff --git a/TESTING/EIG/slasum.f b/TESTING/EIG/slasum.f
index 798310e1..fb36d1de 100644
--- a/TESTING/EIG/slasum.f
+++ b/TESTING/EIG/slasum.f
@@ -23,10 +23,10 @@
$ ' tests failed to pass the threshold'
ELSE
WRITE( IOUNIT, FMT = 9998 )'All tests for ', TYPE,
- $ ' passed the threshold (', NRUN, ' tests run)'
+ $ ' passed the threshold ( ', NRUN, ' tests run)'
END IF
9999 FORMAT( 1X, A3, A2, I4, A8, I5, A35 )
- 9998 FORMAT( / 1X, A14, A3, A23, I5, A11 )
+ 9998 FORMAT( / 1X, A14, A3, A24, I5, A11 )
RETURN
*
* End of SLASUM
diff --git a/TESTING/EIG/zchkec.f b/TESTING/EIG/zchkec.f
index 989613ab..1644aa1a 100644
--- a/TESTING/EIG/zchkec.f
+++ b/TESTING/EIG/zchkec.f
@@ -116,7 +116,7 @@
9996 FORMAT( ' Error in ZTRSEN: RMAX =', 3D12.3, / ' LMAX = ', 3I8,
$ ' NINFO=', 3I8, ' KNT=', I8 )
9995 FORMAT( / 1X, 'All tests for ', A3,
- $ ' routines passed the threshold (', I6, ' tests run)' )
+ $ ' routines passed the threshold ( ', I6, ' tests run)' )
9994 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition',
$ ' estimation routines', / ' ZTRSYL, CTREXC, CTRSNA, CTRSEN',
$ / )
diff --git a/TESTING/LIN/alasum.f b/TESTING/LIN/alasum.f
index fef7459f..057da15e 100644
--- a/TESTING/LIN/alasum.f
+++ b/TESTING/LIN/alasum.f
@@ -49,7 +49,7 @@
9999 FORMAT( 1X, A3, ': ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9998 FORMAT( /1X, 'All tests for ', A3,
- $ ' routines passed the threshold (', I6, ' tests run)' )
+ $ ' routines passed the threshold ( ', I6, ' tests run)' )
9997 FORMAT( 6X, I6, ' error messages recorded' )
RETURN
*
diff --git a/TESTING/LIN/alasvm.f b/TESTING/LIN/alasvm.f
index 67e949ce..123e2183 100644
--- a/TESTING/LIN/alasvm.f
+++ b/TESTING/LIN/alasvm.f
@@ -49,7 +49,7 @@
9999 FORMAT( 1X, A3, ' drivers: ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9998 FORMAT( /1X, 'All tests for ', A3, ' drivers passed the ',
- $ 'threshold (', I6, ' tests run)' )
+ $ 'threshold ( ', I6, ' tests run)' )
9997 FORMAT( 14X, I6, ' error messages recorded' )
RETURN
*
diff --git a/TESTING/LIN/cdrvrf1.f b/TESTING/LIN/cdrvrf1.f
index 03f1b01b..fc76c1ac 100644
--- a/TESTING/LIN/cdrvrf1.f
+++ b/TESTING/LIN/cdrvrf1.f
@@ -206,8 +206,8 @@
9997 FORMAT( 1X, ' Failure in ',A6,' N=',I5,' TYPE=',I5,' UPLO=''',
+ A1, ''', FORM =''',A1,''', NORM=''',A1,''', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A6,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I5,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
9994 FORMAT( 26X, I5,' error message recorded (',A6,')')
*
diff --git a/TESTING/LIN/cdrvrf2.f b/TESTING/LIN/cdrvrf2.f
index c1c18ce1..42ee04d4 100644
--- a/TESTING/LIN/cdrvrf2.f
+++ b/TESTING/LIN/cdrvrf2.f
@@ -190,9 +190,9 @@
+ ' routines ***')
9998 FORMAT( 1X, ' Error in RFP,convertion routines N=',I5,
+ ' UPLO=''', A1, ''', FORM =''',A1,'''')
- 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed (',
+ 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed ( ',
+ I5,' tests run)')
- 9996 FORMAT( 1X, 'RFP convertion routines:',I5,' out of ',I5,
+ 9996 FORMAT( 1X, 'RFP convertion routines: ',I5,' out of ',I5,
+ ' error message recorded')
*
RETURN
diff --git a/TESTING/LIN/cdrvrf3.f b/TESTING/LIN/cdrvrf3.f
index 55bad286..cae0cbea 100644
--- a/TESTING/LIN/cdrvrf3.f
+++ b/TESTING/LIN/cdrvrf3.f
@@ -299,8 +299,8 @@
+ ' SIDE=''',A1,''',',' UPLO=''',A1,''',',' TRANS=''',A1,''',',
+ ' DIAG=''',A1,''',',' M=',I3,', N =', I3,', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I5,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
*
RETURN
diff --git a/TESTING/LIN/cdrvrf4.f b/TESTING/LIN/cdrvrf4.f
index 5ee83a98..f1d5f263 100644
--- a/TESTING/LIN/cdrvrf4.f
+++ b/TESTING/LIN/cdrvrf4.f
@@ -272,8 +272,8 @@
+ ' UPLO=''',A1,''',',' TRANS=''',A1,''',', ' N=',I3,', K =', I3,
+ ', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I5,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
*
RETURN
diff --git a/TESTING/LIN/ddrvab.f b/TESTING/LIN/ddrvab.f
index 6077d236..3c8c233e 100644
--- a/TESTING/LIN/ddrvab.f
+++ b/TESTING/LIN/ddrvab.f
@@ -309,7 +309,7 @@
9996 FORMAT( 1X, A6, ': ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9995 FORMAT( /1X, 'All tests for ', A6,
- $ ' routines passed the threshold (', I6, ' tests run)' )
+ $ ' routines passed the threshold ( ', I6, ' tests run)' )
9994 FORMAT( 6X, I6, ' error messages recorded' )
*
* SUBNAM, INFO, INFOE, M, IMAT
diff --git a/TESTING/LIN/ddrvac.f b/TESTING/LIN/ddrvac.f
index be2fbc4e..02eb36c9 100644
--- a/TESTING/LIN/ddrvac.f
+++ b/TESTING/LIN/ddrvac.f
@@ -335,7 +335,7 @@
9996 FORMAT( 1X, A6, ': ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9995 FORMAT( /1X, 'All tests for ', A6,
- $ ' routines passed the threshold (', I6, ' tests run)' )
+ $ ' routines passed the threshold ( ', I6, ' tests run)' )
9994 FORMAT( 6X, I6, ' error messages recorded' )
*
* SUBNAM, INFO, INFOE, N, IMAT
diff --git a/TESTING/LIN/ddrvrf1.f b/TESTING/LIN/ddrvrf1.f
index 0b9413e6..7a06256a 100644
--- a/TESTING/LIN/ddrvrf1.f
+++ b/TESTING/LIN/ddrvrf1.f
@@ -204,8 +204,8 @@
9997 FORMAT( 1X, ' Failure in ',A6,' N=',I5,' TYPE=',I5,' UPLO=''',
+ A1, ''', FORM =''',A1,''', NORM=''',A1,''', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A6,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I5,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
9994 FORMAT( 26X, I5,' error message recorded (',A6,')')
*
diff --git a/TESTING/LIN/ddrvrf2.f b/TESTING/LIN/ddrvrf2.f
index 6ca6ad97..e5a8e3ce 100644
--- a/TESTING/LIN/ddrvrf2.f
+++ b/TESTING/LIN/ddrvrf2.f
@@ -190,9 +190,9 @@
+ ' routines ***')
9998 FORMAT( 1X, ' Error in RFP,convertion routines N=',I5,
+ ' UPLO=''', A1, ''', FORM =''',A1,'''')
- 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed (',
+ 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed ( ',
+ I5,' tests run)')
- 9996 FORMAT( 1X, 'RFP convertion routines:',I5,' out of ',I5,
+ 9996 FORMAT( 1X, 'RFP convertion routines: ',I5,' out of ',I5,
+ ' error message recorded')
*
RETURN
diff --git a/TESTING/LIN/ddrvrf3.f b/TESTING/LIN/ddrvrf3.f
index 3bef2f73..dfed01dc 100644
--- a/TESTING/LIN/ddrvrf3.f
+++ b/TESTING/LIN/ddrvrf3.f
@@ -287,8 +287,8 @@
+ ' SIDE=''',A1,''',',' UPLO=''',A1,''',',' TRANS=''',A1,''',',
+ ' DIAG=''',A1,''',',' M=',I3,', N =', I3,', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I5,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
*
RETURN
diff --git a/TESTING/LIN/ddrvrf4.f b/TESTING/LIN/ddrvrf4.f
index d0c81314..5a7c22bf 100644
--- a/TESTING/LIN/ddrvrf4.f
+++ b/TESTING/LIN/ddrvrf4.f
@@ -275,8 +275,8 @@
+ ' UPLO=''',A1,''',',' TRANS=''',A1,''',', ' N=',I3,', K =', I3,
+ ', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I5,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
*
RETURN
diff --git a/TESTING/LIN/sdrvrf1.f b/TESTING/LIN/sdrvrf1.f
index 9c1bd40e..e4fefb66 100644
--- a/TESTING/LIN/sdrvrf1.f
+++ b/TESTING/LIN/sdrvrf1.f
@@ -204,8 +204,8 @@
9997 FORMAT( 1X, ' Failure in ',A6,' N=',I5,' TYPE=',I5,' UPLO=''',
+ A1, ''', FORM =''',A1,''', NORM=''',A1,''', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A6,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I5,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
9994 FORMAT( 26X, I5,' error message recorded (',A6,')')
*
diff --git a/TESTING/LIN/sdrvrf2.f b/TESTING/LIN/sdrvrf2.f
index 1a2abf2d..0c5e922a 100644
--- a/TESTING/LIN/sdrvrf2.f
+++ b/TESTING/LIN/sdrvrf2.f
@@ -190,9 +190,9 @@
+ ' routines ***')
9998 FORMAT( 1X, ' Error in RFP,convertion routines N=',I5,
+ ' UPLO=''', A1, ''', FORM =''',A1,'''')
- 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed (',
+ 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed ( ',
+ I5,' tests run)')
- 9996 FORMAT( 1X, 'RFP convertion routines:',I5,' out of ',I5,
+ 9996 FORMAT( 1X, 'RFP convertion routines: ',I5,' out of ',I5,
+ ' error message recorded')
*
RETURN
diff --git a/TESTING/LIN/sdrvrf3.f b/TESTING/LIN/sdrvrf3.f
index e4efafaa..f91bd0c7 100644
--- a/TESTING/LIN/sdrvrf3.f
+++ b/TESTING/LIN/sdrvrf3.f
@@ -287,8 +287,8 @@
+ ' SIDE=''',A1,''',',' UPLO=''',A1,''',',' TRANS=''',A1,''',',
+ ' DIAG=''',A1,''',',' M=',I3,', N =', I3,', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I5,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
*
RETURN
diff --git a/TESTING/LIN/sdrvrf4.f b/TESTING/LIN/sdrvrf4.f
index 0eedbadf..ae627567 100644
--- a/TESTING/LIN/sdrvrf4.f
+++ b/TESTING/LIN/sdrvrf4.f
@@ -275,8 +275,8 @@
+ ' UPLO=''',A1,''',',' TRANS=''',A1,''',', ' N=',I3,', K =', I3,
+ ', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I5,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
*
RETURN
diff --git a/TESTING/LIN/zdrvab.f b/TESTING/LIN/zdrvab.f
index 93466436..2f0128ca 100644
--- a/TESTING/LIN/zdrvab.f
+++ b/TESTING/LIN/zdrvab.f
@@ -310,7 +310,7 @@
9996 FORMAT( 1X, A6, ': ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9995 FORMAT( /1X, 'All tests for ', A6,
- $ ' routines passed the threshold (', I6, ' tests run)' )
+ $ ' routines passed the threshold ( ', I6, ' tests run)' )
9994 FORMAT( 6X, I6, ' error messages recorded' )
*
* SUBNAM, INFO, INFOE, M, IMAT
diff --git a/TESTING/LIN/zdrvac.f b/TESTING/LIN/zdrvac.f
index 5455bd49..e637598f 100644
--- a/TESTING/LIN/zdrvac.f
+++ b/TESTING/LIN/zdrvac.f
@@ -340,7 +340,7 @@
9996 FORMAT( 1X, A6, ': ', I6, ' out of ', I6,
$ ' tests failed to pass the threshold' )
9995 FORMAT( /1X, 'All tests for ', A6,
- $ ' routines passed the threshold (', I6, ' tests run)' )
+ $ ' routines passed the threshold ( ', I6, ' tests run)' )
9994 FORMAT( 6X, I6, ' error messages recorded' )
*
* SUBNAM, INFO, INFOE, N, IMAT
diff --git a/TESTING/LIN/zdrvrf1.f b/TESTING/LIN/zdrvrf1.f
index 592c5ec8..e25863de 100644
--- a/TESTING/LIN/zdrvrf1.f
+++ b/TESTING/LIN/zdrvrf1.f
@@ -208,7 +208,7 @@
9997 FORMAT( 1X, ' Failure in ',A6,' N=',I5,' TYPE=',I5,' UPLO=''',
+ A1, ''', FORM =''',A1,''', NORM=''',A1,''', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A6,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
+ + 'threshold ( ',I5,' tests run)')
9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
9994 FORMAT( 26X, I5,' error message recorded (',A6,')')
diff --git a/TESTING/LIN/zdrvrf3.f b/TESTING/LIN/zdrvrf3.f
index acd11244..eefdb157 100644
--- a/TESTING/LIN/zdrvrf3.f
+++ b/TESTING/LIN/zdrvrf3.f
@@ -299,7 +299,7 @@
+ ' SIDE=''',A1,''',',' UPLO=''',A1,''',',' TRANS=''',A1,''',',
+ ' DIAG=''',A1,''',',' M=',I3,', N =', I3,', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
+ + 'threshold ( ',I5,' tests run)')
9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ ' tests failed to pass the threshold')
*
diff --git a/TESTING/LIN/zdrvrf4.f b/TESTING/LIN/zdrvrf4.f
index fc6b4035..0f40ea33 100644
--- a/TESTING/LIN/zdrvrf4.f
+++ b/TESTING/LIN/zdrvrf4.f
@@ -272,8 +272,8 @@
+ ' UPLO=''',A1,''',',' TRANS=''',A1,''',', ' N=',I3,', K =', I3,
+ ', test=',G12.5)
9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ',
- + 'threshold (',I5,' tests run)')
- 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5,
+ + 'threshold ( ',I6,' tests run)')
+ 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I6,' out of ',I6,
+ ' tests failed to pass the threshold')
*
RETURN
diff --git a/TESTING/lapack_testing.py b/TESTING/lapack_testing.py
new file mode 100755
index 00000000..ae025b46
--- /dev/null
+++ b/TESTING/lapack_testing.py
@@ -0,0 +1,288 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+
+###############################################################################
+# lapack_testing.py
+###############################################################################
+
+
+from subprocess import Popen, STDOUT, PIPE
+import os, sys, math
+import getopt
+# Arguments
+try:
+ opts, args = getopt.getopt(sys.argv[1:], "hsfep:t:n",
+ ["help", "short", "file", "error","prec=","test=","number"])
+
+except getopt.error, msg:
+ print msg
+ print "for help use --help"
+ sys.exit(2)
+
+short_summary=0
+with_file=0
+just_errors = 0
+prec='x'
+test='all'
+only_numbers=0
+for o, a in opts:
+ if o in ("-h", "--help"):
+ print sys.argv[0]+" [-h|--help] [-s |--short] [-f |--file] [-e |--error] [-p p |--prec p] [-t test |--test test] [-n | --number]"
+ print " - h is to print this message"
+ print " - f is to use directly the output of the LAPACK testing (.out files). By default, the script will run all the LAPACK tests"
+ print " LEVEL OF OUTPUT"
+ print " - x is to print a detailed summary"
+ print " - e is to print only the error summary"
+ print " - s is to print a short summary"
+ print " - n is to print the numbers of failing tests (turn on summary mode)"
+ print " SECLECTION OF TESTS:"
+ print " - p [s/c/d/z] is to indicate the PRECISION to run:"
+ print " s=single"
+ print " d=double"
+ print " c=complex"
+ print " z=double complex"
+ print " x=all [DEFAULT]"
+ print " - t [lin/eig/mixed/rfp/all] is to indicate which TEST FAMILY to run:"
+ print " lin=Linear Equation"
+ print " eig=Eigen Problems"
+ print " mixed=mixed-precision"
+ print " rfp=rfp format"
+ print " all=all tests [DEFAULT]"
+ print " EXAMPLES:"
+ print " ./lapack_testing.py -n -f"
+ print " Will return the numbers of failed tests by analyzing the LAPACK output"
+ print " ./lapack_testing.py -n -f -p s"
+ print " Will return the numbers of failed tests in REAL precision by analyzing the LAPACK output"
+ print " ./lapack_testing.py -n -f -p s -t eig "
+ print " Will return the numbers of failed tests in REAL precision by analyzing only the LAPACK output of EIGEN testings"
+ print "Written by Julie Langou (June 2011) "
+ sys.exit(0)
+ else:
+ if o in ("-s", "--short"):
+ short_summary = 1
+ if o in ("-f", "--file"):
+ with_file = 1
+ if o in ("-e", "--error"):
+ just_errors = 1
+ if o in ( '-p', '--prec' ):
+ prec = a
+ if o in ( '-t', '--test' ):
+ test = a
+ if o in ( '-n', '--number' ):
+ only_numbers = 1
+ short_summary = 1
+
+# process options
+execution=1
+summary="SUMMARY\n";
+nb_of_test=0
+
+# Add current directory to the path for subshells of this shell
+# Allows the popen to find local files in both windows and unixes
+os.environ["PATH"] = os.environ["PATH"]+":."
+
+# Define a function to open the executable (different filenames on unix and Windows)
+def run_summary_test( f, cmdline, short_summary):
+ nb_test_run=0
+ nb_test_fail=0
+ nb_test_illegal=0
+ nb_test_info=0
+ if (with_file==1):
+ if not os.path.exists(cmdline):
+ error_message=cmdline+" file not found"
+ r=1
+ else:
+ pipe = open(cmdline,'r')
+ r=0
+ else:
+ if os.name != 'nt':
+ cmdline="./" + cmdline
+
+ outfile=cmdline.split()[4]
+ pipe = open(outfile,'w')
+ p = Popen(cmdline, shell=True, stdout=pipe)
+ p.wait()
+ pipe.close()
+ r=p.returncode
+ pipe = open(outfile,'r')
+ error_message=cmdline+" did not work"
+
+ if r != 0 and (with_file==0):
+ print "---- TESTING " + cmdline.split()[0] + "... FAILED(" + error_message +") !"
+ for line in pipe.readlines():
+ f.write(str(line))
+ elif r != 0 and (with_file==1):
+ print "---- ERROR: You used the option -f, please check that you have the LAPACK output!"
+ print "---- "+error_message
+ else:
+ for line in pipe.readlines():
+ f.write(str(line))
+ words_in_line=line.split()
+ if (line.find("run")!=-1):
+# print line
+ whereisrun=words_in_line.index("run)")
+ nb_test_run+=int(words_in_line[whereisrun-2])
+ if (line.find("out of")!=-1):
+ if (short_summary==0): print line,
+ whereisout= words_in_line.index("out")
+ nb_test_fail+=int(words_in_line[whereisout-1])
+ if (line.find("illegal")!=-1):
+ if (short_summary==0):print line,
+ nb_test_illegal+=1
+ if (line.find("INFO")!=-1):
+ if (short_summary==0):print line,
+ nb_test_info+=1
+ if (with_file==1):
+ pipe.close()
+
+ f.flush();
+
+ return [nb_test_run,nb_test_fail,nb_test_illegal,nb_test_info]
+
+
+# If filename cannot be opened, send output to sys.stderr
+filename = "testing_results.txt"
+try:
+ f = open(filename, 'w')
+except IOError:
+ f = sys.stdout
+
+if (short_summary==0):
+ print " "
+ print "---------------- Testing LAPACK Routines ----------------"
+ print " "
+ print "-- Detailed results are stored in", filename
+
+dtypes = (
+("s", "d", "c", "z"),
+("REAL ", "DOUBLE PRECISION", "COMPLEX ", "COMPLEX16 "),
+)
+
+if prec=='s':
+ range_prec=[0]
+elif prec=='d':
+ range_prec=[1]
+elif prec=='c':
+ range_prec=[2]
+elif prec=='z':
+ range_prec=[3]
+else:
+ range_prec=range(4)
+
+if test=='lin':
+ range_test=[15]
+elif test=='mixed':
+ range_test=[16]
+ range_prec=[1,3]
+elif test=='rfp':
+ range_test=[17]
+elif test=='eig':
+ range_test=range(15)
+else:
+ range_test=range(18)
+
+list_results = [
+[0, 0, 0, 0, 0],
+[0, 0, 0, 0, 0],
+[0, 0, 0, 0, 0],
+[0, 0, 0, 0, 0],
+]
+
+for dtype in range_prec:
+ letter = dtypes[0][dtype]
+ name = dtypes[1][dtype]
+
+ if (short_summary==0):
+ print " "
+ print "------------------------- %s ------------------------" % name
+ print " "
+ sys.stdout.flush()
+
+
+ dtests = (
+ ("nep", "sep", "svd",
+ letter+"ec",letter+"ed",letter+"gg",
+ letter+"gd",letter+"sb",letter+"sg",
+ letter+"bb","glm","gqr",
+ "gsv","csd","lse",
+ letter+"test", letter+dtypes[0][dtype-1]+"test",letter+"test_rfp"),
+ ("Nonsymmetric Eigenvalue Problem", "Symmetric Eigenvalue Problem", "Singular Value Decomposition",
+ "Eigen Condition","Nonsymmetric Eigenvalue","Nonsymmetric Generalized Eigenvalue Problem",
+ "Nonsymmetric Generalized Eigenvalue Problem driver", "Symmetric Eigenvalue Problem", "Symmetric Eigenvalue Generalized Problem",
+ "Banded Singular Value Decomposition routines", "Generalized Linear Regression Model routines", "Generalized QR and RQ factorization routines",
+ "Generalized Singular Value Decomposition routines", "CS Decomposition routines", "Constrained Linear Least Squares routines",
+ "Linear Equation routines", "Mixed Precision linear equation routines","RFP linear equation routines"),
+ (letter+"nep", letter+"sep", letter+"svd",
+ letter+"ec",letter+"ed",letter+"gg",
+ letter+"gd",letter+"sb",letter+"sg",
+ letter+"bb",letter+"glm",letter+"gqr",
+ letter+"gsv",letter+"csd",letter+"lse",
+ letter+"test", letter+dtypes[0][dtype-1]+"test",letter+"test_rfp"),
+ )
+
+
+ for dtest in range_test:
+ nb_of_test=0
+ # NEED TO SKIP SOME PRECISION (namely s and c) FOR PROTO MIXED PRECISION TESTING
+ if dtest==16 and (letter=="s" or letter=="c"):
+ continue
+ if (with_file==1):
+ cmdbase=dtests[2][dtest]+".out"
+ else:
+ if dtest==15:
+ # LIN TESTS
+ cmdbase="xlintst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
+ elif dtest==16:
+ # PROTO LIN TESTS
+ cmdbase="xlintst"+letter+dtypes[0][dtype-1]+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
+ elif dtest==17:
+ # PROTO LIN TESTS
+ cmdbase="xlintstrf"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
+ else:
+ # EIG TESTS
+ cmdbase="xeigtst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out"
+ if (just_errors==0 and short_summary==0):
+ print "--> Testing "+name+" "+dtests[1][dtest]+" [ "+cmdbase+" ]"
+ # Run the process: either to read the file or run the LAPACK testing
+ nb_test = run_summary_test(f, cmdbase, short_summary)
+ list_results[0][dtype]+=nb_test[0]
+ list_results[1][dtype]+=nb_test[1]
+ list_results[2][dtype]+=nb_test[2]
+ list_results[3][dtype]+=nb_test[3]
+ got_error=nb_test[1]+nb_test[2]+nb_test[3]
+
+ if (short_summary==0):
+ if (nb_test[0]>0 and just_errors==0):
+ print "--> Tests passed: "+str(nb_test[0])
+ if (nb_test[1]>0):
+ print "--> Tests failing to pass the threshold: "+str(nb_test[1])
+ if (nb_test[2]>0):
+ print "--> Illegal Error: "+str(nb_test[2])
+ if (nb_test[3]>0):
+ print "--> Info Error: "+str(nb_test[3])
+ if (got_error>0 and just_errors==1):
+ print "ERROR IS LOCATED IN "+name+" "+dtests[1][dtest]+" [ "+cmdbase+" ]"
+ print ""
+ if (just_errors==0):
+ print ""
+# elif (got_error>0):
+# print dtests[2][dtest]+".out \t"+str(nb_test[1])+"\t"+str(nb_test[2])+"\t"+str(nb_test[3])
+
+ sys.stdout.flush()
+ summary+=name+"\t"+str(list_results[1][dtype])+"\t"+str(list_results[2][dtype])+"\t"+str(list_results[3][dtype])+"\n"
+ list_results[0][4]+=list_results[0][dtype]
+ list_results[1][4]+=list_results[1][dtype]
+ list_results[2][4]+=list_results[2][dtype]
+ list_results[3][4]+=list_results[3][dtype]
+
+if only_numbers==1:
+ print str(list_results[1][4])+"\n"+str(list_results[2][4])+"\n"+str(list_results[3][4])
+else:
+ print summary
+ print "--> ALL PRECISION \t"+str(list_results[1][4])+"\t"+str(list_results[2][4])+"\t"+str(list_results[3][4])
+
+
+
+# This may close the sys.stdout stream, so make it the last statement
+f.close()