Like their BLAS counterparts, the Level 1 testers print only a PASS line
or a bare FAIL per subprogram, with no counts and no footer. Report:
CBLAS_SDOT COMPUTATIONAL TESTS: 16 RUN, 0 FAILED
One test is one element comparison in STEST or ITEST1; CTEST delegates
to STEST and is not counted separately. The counters travel in a new
/CNTBLA/ block and the subprogram name reaches the main program from
HEADER through /NAMBLA/, matching the BLAS Level 1 drivers.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The C error-exit checkers report only a pass/fail verdict per routine.
Report the counts too, matching the Fortran drivers:
cblas_sgemv ERROR-EXIT TESTS: 13 RUN, 0 FAILED
One test is one chkxer() call. A test fails either because the routine
never reached xerbla, which chkxer already detects through cblas_lerr,
or because c_xerbla.c was reached with the wrong routine name, which
clears cblas_ok without chkxer noticing. The extended API build hits
exactly that second case, reporting cblas_sgemv_64 against an expected
cblas_sgemv, so a new cblas_xbad flag carries it across and the counts
agree with the verdict.
The Windows path that skips the xerbla tests returns before printing a
verdict and so prints no counts either.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Report how many tests each routine ran and how many failed, in the same
shape as the BLAS drivers, tagged with the data layout so the two passes
stay distinguishable:
cblas_sgemv COLUMN-MAJOR COMPUTATIONAL TESTS: 3456 RUN, 0 FAILED
cblas_sgemv ROW-MAJOR COMPUTATIONAL TESTS: 3456 RUN, 0 FAILED
As in the BLAS drivers, NTESTS and NFAILS sit beside the existing
ERRMAX, are incremented where ERRMAX accumulates, and are reported at
the common exit so every verdict path carries them. The paths that set
FATAL bump them too, so an aborting routine cannot report zero failures.
Existing output lines are unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
c_sblat2.f, c_dblat2.f and all four Level 3 drivers dispatch on IORDER
and report the column-major and row-major passes with distinct wording.
c_cblat2.f and c_zblat2.f never got that dispatch, so they print two
textually identical lines per routine:
cblas_cgemv PASSED THE COMPUTATIONAL TESTS ( 3460 CALLS)
cblas_cgemv PASSED THE COMPUTATIONAL TESTS ( 3460 CALLS)
There is no way to tell which layout a verdict belongs to, or to notice
that one of the two is missing. Add the dispatch, reusing the wording
and the 10000..10003 labels the other drivers already use. Those labels
also name the layout banner in the main program, which is fine: FORMAT
labels are local to a program unit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Switch cblas_xerbla(), F77_xerbla_base() and the test harness over to
cblas_xerbla_internal.h. Two diagnostic bugs go away with the duplicated
code:
- the row-major remap keyed off strstr(rout, "gemm"), which also
matches gemmtr and so wrongly swapped its arguments 4 and 5;
- the six-character name buffer truncated cblas_sgemmtr and
cblas_sskewsyr2k in the library, while the harness used an
eleven-character buffer and did not, so the two disagreed about the
same routine.
The Fortran entry points now take FCHAR and read the argument number
through F77_INT consistently, honour the hidden string length instead of
assuming six characters, and carry doxygen comments.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The error-exit testers only exercised the option arguments (Side,
Uplo, Trans, Diag) with CblasColMajor, so the diagnostics in the
row-major branches of the level-3 routines were never tested. Mirror
every column-major option-argument test under CblasRowMajor, add the
missing row-major N/K dimension tests for the syrk/herk/syr2k/her2k/
skewsyr2k families, turn the duplicated column-major blocks in the
spr/hpr sections into the intended row-major tests, and make the
mislabelled gemmtr ldb "row major" tests actually use CblasRowMajor.
The new tests expose wrong INFO values in the row-major branches of
cgemm (TransB) and the syrk/syr2k/herk/skewsyr2k families (Uplo), and
silently accepted invalid Trans values in the row-major branches of
the complex herk/her2k/syrk/syr2k routines; these are fixed in the
following commits.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Several LAPACK, BLAS, and CBLAS source files defined a local statement
function named ABS1 for the complex 1-norm approximation:
ABS1( X ) = ABS( REAL( X ) ) + ABS( AIMAG( X ) )
ABS1( X ) = ABS( DBLE( X ) ) + ABS( DIMAG( X ) )
The majority of the codebase already uses CABS1 for this identical
purpose. This commit renames ABS1 to CABS1 in all remaining files
(definition line, declaration line, and all call sites within the
same file) to make the naming consistent across the repository.
A small number of fixed-form lines required continuation-line splits
to stay within the 72-column limit after the rename.
No numerical change. Statement functions are file-local in Fortran,
so there is no ABI or interface impact.
This is a preparatory cleanup before inlining these statement
functions (see issue #1200).