F77_ZHEMV(3)

πŸ“¦
version 3.12.1 Β· 3 versions
, in arch rolling

πŸŽ€ CBLAS/include/cblas_f77.h(3) πŸŽ€

okay so this page lives in the Library Functions Manual section of the Unix man pages, and bestie, it is short β€” like, suspiciously short. we're talking the header of a C header, and honestly? it's giving "the file exists and that's the whole personality." let's get into it πŸ’…


✨ NAME ✨

CBLAS/include/cblas_f77.h β€” that's it. that's the name. literally just the path to the header file, no fancy description, no subtitle, no nothing. it's the main character and it knows it πŸ‘‘

ngl this is the whole NAME section. some man pages hand you a whole paragraph here; this one hands you a path and walks away. iconic behaviour, no notes 🌸

πŸ¦‹ SYNOPSIS πŸ¦‹

here's the part where you actually use the thing. you gotta pull in these two headers, fr fr:

#include <stdarg.h>
#include <stdint.h>

that's the full synopsis, bestie β€” two #include lines and we're done. stdarg.h and stdint.h, in that order, exactly like that. don't get creative with it 🫢

lowkey important: this is a header file, so the whole game plan is #include-ing it into your own code. the SYNOPSIS is just showing you what it drags in with it ✨

bestie we are just getting started β€” there's more of this page coming, so don't go anywhere πŸ’–

✨ Macros ✨

okay bestie, brace yourself because this section is a lot β€” it's the whole macro situation from cblas_f77.h, and it is giving "someone generated this at 3am and honestly? iconic". πŸ’… We're not skipping any of it, so grab a snack. πŸ“

First up, the little foundational ones β€” these set the vibe for everything else:

  • BLAS_FORTRAN_STRLEN_END β€” the star of the show, defined with no value at all (it's just there, existing, main character energy).
  • FORTRAN_STRLEN β€” defined as size_t. The length type. Slay.
  • F77_INT β€” defined as int32_t.
  • FCHAR β€” defined as char *.
  • FINT β€” defined as const F77_INT * (note the const, she's protected πŸ”’).
  • FINT2 β€” defined as F77_INT * (no const, she's editable).
  • API_SUFFIX(a) β€” a function-like macro taking a, expands to nothing visible here.
  • F77_GLOBAL_SUFFIX(a, b) β€” function-like macro, two args. Yes there are two spaces after that comma, that's literally how it's written, don't come for me πŸ™ˆ.
  • F77_GLOBAL_SUFFIX_(a, b) β€” same but with a trailing underscore in the name (the sneaky twin).

🌸 the _base macros

Every single one of these pairs a lowercase F77_*_base name with a F77_GLOBAL_SUFFIX(...) call. There are so many. Let's go group by group, no cap. 🫢

er, xerbla + the rotation girlies

#define F77_xerbla_base   F77_GLOBAL_SUFFIX(xerbla,XERBLA)
#define F77_srotg_base   F77_GLOBAL_SUFFIX(srotg,SROTG)
#define F77_srotmg_base   F77_GLOBAL_SUFFIX(srotmg,SROTMG)
#define F77_srot_base   F77_GLOBAL_SUFFIX(srot,SROT)
#define F77_srotm_base   F77_GLOBAL_SUFFIX(srotm,SROTM)
#define F77_drotg_base   F77_GLOBAL_SUFFIX(drotg,DROTG)
#define F77_drotmg_base   F77_GLOBAL_SUFFIX(drotmg,DROTMG)
#define F77_drot_base   F77_GLOBAL_SUFFIX(drot,DROT)
#define F77_drotm_base   F77_GLOBAL_SUFFIX(drotm,DROTM)

swap / copy / axpy / i?amax β€” the level-1 legends πŸ’–

#define F77_sswap_base   F77_GLOBAL_SUFFIX(sswap,SSWAP)
#define F77_scopy_base   F77_GLOBAL_SUFFIX(scopy,SCOPY)
#define F77_saxpy_base   F77_GLOBAL_SUFFIX(saxpy,SAXPY)
#define F77_isamax_sub_base   F77_GLOBAL_SUFFIX(isamaxsub,ISAMAXSUB)
#define F77_dswap_base   F77_GLOBAL_SUFFIX(dswap,DSWAP)
#define F77_dcopy_base   F77_GLOBAL_SUFFIX(dcopy,DCOPY)
#define F77_daxpy_base   F77_GLOBAL_SUFFIX(daxpy,DAXPY)
#define F77_idamax_sub_base   F77_GLOBAL_SUFFIX(idamaxsub,IDAMAXSUB)
#define F77_cswap_base   F77_GLOBAL_SUFFIX(cswap,CSWAP)
#define F77_ccopy_base   F77_GLOBAL_SUFFIX(ccopy,CCOPY)
#define F77_caxpy_base   F77_GLOBAL_SUFFIX(caxpy,CAXPY)
#define F77_icamax_sub_base   F77_GLOBAL_SUFFIX(icamaxsub,ICAMAXSUB)
#define F77_zswap_base   F77_GLOBAL_SUFFIX(zswap,ZSWAP)
#define F77_zcopy_base   F77_GLOBAL_SUFFIX(zcopy,ZCOPY)
#define F77_zaxpy_base   F77_GLOBAL_SUFFIX(zaxpy,ZAXPY)
#define F77_izamax_sub_base   F77_GLOBAL_SUFFIX(izamaxsub,IZAMAXSUB)

dot products πŸŽ€

#define F77_sdot_sub_base   F77_GLOBAL_SUFFIX(sdotsub,SDOTSUB)
#define F77_ddot_sub_base   F77_GLOBAL_SUFFIX(ddotsub,DDOTSUB)
#define F77_dsdot_sub_base   F77_GLOBAL_SUFFIX(dsdotsub,DSDOTSUB)

scal (the scaling squad) ⭐

#define F77_sscal_base   F77_GLOBAL_SUFFIX(sscal,SSCAL)
#define F77_dscal_base   F77_GLOBAL_SUFFIX(dscal,DSCAL)
#define F77_cscal_base   F77_GLOBAL_SUFFIX(cscal,CSCAL)
#define F77_zscal_base   F77_GLOBAL_SUFFIX(zscal,ZSCAL)
#define F77_csscal_base   F77_GLOBAL_SUFFIX(csscal,CSSCAL)
#define F77_zdscal_base   F77_GLOBAL_SUFFIX(zdscal,ZDSCAL)

complex dot products, both flavours (u and c, we don't play favourites) πŸ¦‹

#define F77_cdotu_sub_base   F77_GLOBAL_SUFFIX(cdotusub,CDOTUSUB)
#define F77_cdotc_sub_base   F77_GLOBAL_SUFFIX(cdotcsub,CDOTCSUB)
#define F77_zdotu_sub_base   F77_GLOBAL_SUFFIX(zdotusub,ZDOTUSUB)
#define F77_zdotc_sub_base   F77_GLOBAL_SUFFIX(zdotcsub,ZDOTCSUB)

nrm2 + asum + the extra double-precision sdsdot one πŸ‘‘

#define F77_snrm2_sub_base   F77_GLOBAL_SUFFIX(snrm2sub,SNRM2SUB)
#define F77_sasum_sub_base   F77_GLOBAL_SUFFIX(sasumsub,SASUMSUB)
#define F77_dnrm2_sub_base   F77_GLOBAL_SUFFIX(dnrm2sub,DNRM2SUB)
#define F77_dasum_sub_base   F77_GLOBAL_SUFFIX(dasumsub,DASUMSUB)
#define F77_scnrm2_sub_base   F77_GLOBAL_SUFFIX(scnrm2sub,SCNRM2SUB)
#define F77_scasum_sub_base   F77_GLOBAL_SUFFIX(scasumsub,SCASUMSUB)
#define F77_dznrm2_sub_base   F77_GLOBAL_SUFFIX(dznrm2sub,DZNRM2SUB)
#define F77_dzasum_sub_base   F77_GLOBAL_SUFFIX(dzasumsub,DZASUMSUB)
#define F77_sdsdot_sub_base   F77_GLOBAL_SUFFIX(sdsdotsub,SDSDOTSUB)

complex rotations + the cabs1 girlies β€” look closely, these have a SPACE after the comma 🌈

#define F77_crotg_base   F77_GLOBAL_SUFFIX(crotg, CROTG)
#define F77_csrot_base   F77_GLOBAL_SUFFIX(csrot, CSROT)
#define F77_zrotg_base   F77_GLOBAL_SUFFIX(zrotg, ZROTG)
#define F77_zdrot_base   F77_GLOBAL_SUFFIX(zdrot, ZDROT)
#define F77_scabs1_sub_base   F77_GLOBAL_SUFFIX(scabs1sub, SCABS1SUB)
#define F77_dcabs1_sub_base   F77_GLOBAL_SUFFIX(dcabs1sub, DCABS1SUB)

symmetric / hermitian matrix-vector, plus rank updates πŸ’œ

#define F77_ssymv_base   F77_GLOBAL_SUFFIX(ssymv,SSYMV)
#define F77_ssbmv_base   F77_GLOBAL_SUFFIX(ssbmv,SSBMV)
#define F77_sspmv_base   F77_GLOBAL_SUFFIX(sspmv,SSPMV)
#define F77_sger_base   F77_GLOBAL_SUFFIX(sger,SGER)
#define F77_ssyr_base   F77_GLOBAL_SUFFIX(ssyr,SSYR)
#define F77_sspr_base   F77_GLOBAL_SUFFIX(sspr,SSPR)
#define F77_ssyr2_base   F77_GLOBAL_SUFFIX(ssyr2,SSYR2)
#define F77_sspr2_base   F77_GLOBAL_SUFFIX(sspr2,SSPR2)
#define F77_dsymv_base   F77_GLOBAL_SUFFIX(dsymv,DSYMV)
#define F77_dsbmv_base   F77_GLOBAL_SUFFIX(dsbmv,DSBMV)
#define F77_dspmv_base   F77_GLOBAL_SUFFIX(dspmv,DSPMV)
#define F77_dger_base   F77_GLOBAL_SUFFIX(dger,DGER)
#define F77_dsyr_base   F77_GLOBAL_SUFFIX(dsyr,DSYR)
#define F77_dspr_base   F77_GLOBAL_SUFFIX(dspr,DSPR)
#define F77_dsyr2_base   F77_GLOBAL_SUFFIX(dsyr2,DSYR2)
#define F77_dspr2_base   F77_GLOBAL_SUFFIX(dspr2,DSPR2)
#define F77_chemv_base   F77_GLOBAL_SUFFIX(chemv,CHEMV)
#define F77_chbmv_base   F77_GLOBAL_SUFFIX(chbmv,CHBMV)
#define F77_chpmv_base   F77_GLOBAL_SUFFIX(chpmv,CHPMV)
#define F77_cgeru_base   F77_GLOBAL_SUFFIX(cgeru,CGERU)
#define F77_cgerc_base   F77_GLOBAL_SUFFIX(cgerc,CGERC)
#define F77_cher_base   F77_GLOBAL_SUFFIX(cher,CHER)
#define F77_chpr_base   F77_GLOBAL_SUFFIX(chpr,CHPR)
#define F77_cher2_base   F77_GLOBAL_SUFFIX(cher2,CHER2)
#define F77_chpr2_base   F77_GLOBAL_SUFFIX(chpr2,CHPR2)
#define F77_zhemv_base   F77_GLOBAL_SUFFIX(zhemv,ZHEMV)
#define F77_zhbmv_base   F77_GLOBAL_SUFFIX(zhbmv,ZHBMV)
#define F77_zhpmv_base   F77_GLOBAL_SUFFIX(zhpmv,ZHPMV)
#define F77_zgeru_base   F77_GLOBAL_SUFFIX(zgeru,ZGERU)
#define F77_zgerc_base   F77_GLOBAL_SUFFIX(zgerc,ZGERC)
#define F77_zher_base   F77_GLOBAL_SUFFIX(zher,ZHER)
#define F77_zhpr_base   F77_GLOBAL_SUFFIX(zhpr,ZHPR)
#define F77_zher2_base   F77_GLOBAL_SUFFIX(zher2,ZHER2)
#define F77_zhpr2_base   F77_GLOBAL_SUFFIX(zhpr2,ZHPR2)

triangular matrix-vector / solve, the whole alphabet of them πŸ”₯

#define F77_sgemv_base   F77_GLOBAL_SUFFIX(sgemv,SGEMV)
#define F77_sgbmv_base   F77_GLOBAL_SUFFIX(sgbmv,SGBMV)
#define F77_strmv_base   F77_GLOBAL_SUFFIX(strmv,STRMV)
#define F77_stbmv_base   F77_GLOBAL_SUFFIX(stbmv,STBMV)
#define F77_stpmv_base   F77_GLOBAL_SUFFIX(stpmv,STPMV)
#define F77_strsv_base   F77_GLOBAL_SUFFIX(strsv,STRSV)
#define F77_stbsv_base   F77_GLOBAL_SUFFIX(stbsv,STBSV)
#define F77_stpsv_base   F77_GLOBAL_SUFFIX(stpsv,STPSV)
#define F77_dgemv_base   F77_GLOBAL_SUFFIX(dgemv,DGEMV)
#define F77_dgbmv_base   F77_GLOBAL_SUFFIX(dgbmv,DGBMV)
#define F77_dtrmv_base   F77_GLOBAL_SUFFIX(dtrmv,DTRMV)
#define F77_dtbmv_base   F77_GLOBAL_SUFFIX(dtbmv,DTBMV)
#define F77_dtpmv_base   F77_GLOBAL_SUFFIX(dtpmv,DTPMV)
#define F77_dtrsv_base   F77_GLOBAL_SUFFIX(dtrsv,DTRSV)
#define F77_dtbsv_base   F77_GLOBAL_SUFFIX(dtbsv,DTBSV)
#define F77_dtpsv_base   F77_GLOBAL_SUFFIX(dtpsv,DTPSV)
#define F77_cgemv_base   F77_GLOBAL_SUFFIX(cgemv,CGEMV)
#define F77_cgbmv_base   F77_GLOBAL_SUFFIX(cgbmv,CGBMV)
#define F77_ctrmv_base   F77_GLOBAL_SUFFIX(ctrmv,CTRMV)
#define F77_ctbmv_base   F77_GLOBAL_SUFFIX(ctbmv,CTBMV)
#define F77_ctpmv_base   F77_GLOBAL_SUFFIX(ctpmv,CTPMV)
#define F77_ctrsv_base   F77_GLOBAL_SUFFIX(ctrsv,CTRSV)
#define F77_ctbsv_base   F77_GLOBAL_SUFFIX(ctbsv,CTBSV)
#define F77_ctpsv_base   F77_GLOBAL_SUFFIX(ctpsv,CTPSV)
#define F77_zgemv_base   F77_GLOBAL_SUFFIX(zgemv,ZGEMV)
#define F77_zgbmv_base   F77_GLOBAL_SUFFIX(zgbmv,ZGBMV)
#define F77_ztrmv_base   F77_GLOBAL_SUFFIX(ztrmv,ZTRMV)
#define F77_ztbmv_base   F77_GLOBAL_SUFFIX(ztbmv,ZTBMV)
#define F77_ztpmv_base   F77_GLOBAL_SUFFIX(ztpmv,ZTPMV)
#define F77_ztrsv_base   F77_GLOBAL_SUFFIX(ztrsv,ZTRSV)
#define F77_ztbsv_base   F77_GLOBAL_SUFFIX(ztbsv,ZTBSV)
#define F77_ztpsv_base   F77_GLOBAL_SUFFIX(ztpsv,ZTPSV)

level 3 hermitian stuff + the gemm/trmm/trsm heavy hitters 😭

#define F77_chemm_base   F77_GLOBAL_SUFFIX(chemm,CHEMM)
#define F77_cherk_base   F77_GLOBAL_SUFFIX(cherk,CHERK)
#define F77_cher2k_base   F77_GLOBAL_SUFFIX(cher2k,CHER2K)
#define F77_zhemm_base   F77_GLOBAL_SUFFIX(zhemm,ZHEMM)
#define F77_zherk_base   F77_GLOBAL_SUFFIX(zherk,ZHERK)
#define F77_zher2k_base   F77_GLOBAL_SUFFIX(zher2k,ZHER2K)
#define F77_sgemm_base   F77_GLOBAL_SUFFIX(sgemm,SGEMM)
#define F77_sgemmtr_base   F77_GLOBAL_SUFFIX(sgemmtr,SGEMMTR)
#define F77_ssymm_base   F77_GLOBAL_SUFFIX(ssymm,SSYMM)
#define F77_ssyrk_base   F77_GLOBAL_SUFFIX(ssyrk,SSYRK)
#define F77_ssyr2k_base   F77_GLOBAL_SUFFIX(ssyr2k,SSYR2K)
#define F77_strmm_base   F77_GLOBAL_SUFFIX(strmm,STRMM)
#define F77_strsm_base   F77_GLOBAL_SUFFIX(strsm,STRSM)
#define F77_dgemm_base   F77_GLOBAL_SUFFIX(dgemm,DGEMM)
#define F77_dgemmtr_base   F77_GLOBAL_SUFFIX(dgemmtr,DGEMMTR)
#define F77_dsymm_base   F77_GLOBAL_SUFFIX(dsymm,DSYMM)
#define F77_dsyrk_base   F77_GLOBAL_SUFFIX(dsyrk,DSYRK)
#define F77_dsyr2k_base   F77_GLOBAL_SUFFIX(dsyr2k,DSYR2K)
#define F77_dtrmm_base   F77_GLOBAL_SUFFIX(dtrmm,DTRMM)
#define F77_dtrsm_base   F77_GLOBAL_SUFFIX(dtrsm,DTRSM)
#define F77_cgemm_base   F77_GLOBAL_SUFFIX(cgemm,CGEMM)
#define F77_cgemmtr_base   F77_GLOBAL_SUFFIX(cgemmtr,CGEMMTR)
#define F77_csymm_base   F77_GLOBAL_SUFFIX(csymm,CSYMM)
#define F77_csyrk_base   F77_GLOBAL_SUFFIX(csyrk,CSYRK)
#define F77_csyr2k_base   F77_GLOBAL_SUFFIX(csyr2k,CSYR2K)
#define F77_ctrmm_base   F77_GLOBAL_SUFFIX(ctrmm,CTRMM)
#define F77_ctrsm_base   F77_GLOBAL_SUFFIX(ctrsm,CTRSM)
#define F77_zgemm_base   F77_GLOBAL_SUFFIX(zgemm,ZGEMM)
#define F77_zgemmtr_base   F77_GLOBAL_SUFFIX(zgemmtr,ZGEMMTR)
#define F77_zsymm_base   F77_GLOBAL_SUFFIX(zsymm,ZSYMM)
#define F77_zsyrk_base   F77_GLOBAL_SUFFIX(zsyrk,ZSYRK)
#define F77_zsyr2k_base   F77_GLOBAL_SUFFIX(zsyr2k,ZSYR2K)
#define F77_ztrmm_base   F77_GLOBAL_SUFFIX(ztrmm,ZTRMM)
#define F77_ztrsm_base   F77_GLOBAL_SUFFIX(ztrsm,ZTRSM)

🧚 and now the (...) macros

These are the function-like ones β€” each one is a macro that takes ... (variadic, she takes anything). Listing them exactly as written, in exactly this order, duplicates and all β€” because yes, F77_dswap(...), F77_cswap(...) and F77_zswap(...) each appear twice in there, and that is literally what's in the file. Not me. The file. πŸ’€

#define F77_srot(...)
#define F77_srotg(...)
#define F77_srotm(...)
#define F77_srotmg(...)
#define F77_sswap(...)
#define F77_scopy(...)
#define F77_saxpy(...)
#define F77_sdot_sub(...)
#define F77_sdsdot_sub(...)
#define F77_sscal(...)
#define F77_snrm2_sub(...)
#define F77_sasum_sub(...)
#define F77_isamax_sub(...)
#define F77_scabs1_sub(...)
#define F77_drot(...)
#define F77_drotg(...)
#define F77_drotm(...)
#define F77_drotmg(...)
#define F77_dswap(...)
#define F77_dcopy(...)
#define F77_daxpy(...)
#define F77_dswap(...)
#define F77_dsdot_sub(...)
#define F77_ddot_sub(...)
#define F77_dscal(...)
#define F77_dnrm2_sub(...)
#define F77_dasum_sub(...)
#define F77_idamax_sub(...)
#define F77_dcabs1_sub(...)
#define F77_crotg(...)
#define F77_csrot(...)
#define F77_cswap(...)
#define F77_ccopy(...)
#define F77_caxpy(...)
#define F77_cswap(...)
#define F77_cdotc_sub(...)
#define F77_cdotu_sub(...)
#define F77_cscal(...)
#define F77_icamax_sub(...)
#define F77_csscal(...)
#define F77_scnrm2_sub(...)
#define F77_scasum_sub(...)
#define F77_zrotg(...)
#define F77_zdrot(...)
#define F77_zswap(...)
#define F77_zcopy(...)
#define F77_zaxpy(...)
#define F77_zswap(...)
#define F77_zdotc_sub(...)
#define F77_zdotu_sub(...)
#define F77_zdscal(...)
#define F77_zscal(...)
#define F77_dznrm2_sub(...)
#define F77_dzasum_sub(...)
#define F77_izamax_sub(...)

That's the whole macro menu, bestie. Every last one. Obsessed with your commitment to reading all of it 🫢✨

ok so the macro wall continues and honestly? it's giving extensive. every single one of these is written as #define with (...) for the arguments, and bestie I am NOT skipping a single one, so buckle up πŸŽ€

First up: the rank-update girlies. a whole little fleet of them, one per type and per conjugation:

#define F77_sger(...)
#define F77_dger(...)
#define F77_cgerc(...)
#define F77_cgeru(...)
#define F77_zgerc(...)
#define F77_zgeru(...)

see how the complex ones come in pairs? cgerc and cgeru, zgerc and zgeru β€” that's conjugate vs unconjugate, the iconic duo of complex BLAS ✨


πŸ’œ the level-2 single-precision block

real s-prefixed, matrix-vector everything:

#define F77_sgemv(...)
#define F77_sgbmv(...)
#define F77_ssymv(...)
#define F77_ssbmv(...)
#define F77_sspmv(...)
#define F77_strmv(...)
#define F77_stbmv(...)
#define F77_strsv(...)
#define F77_stbsv(...)
#define F77_stpmv(...)
#define F77_stpsv(...)
#define F77_ssyr(...)
#define F77_sspr(...)
#define F77_sspr2(...)
#define F77_ssyr2(...)

not the mv / bmv / symv / sbmv / spmv pattern β€” general, banded, symmetric, symmetric-banded, symmetric-packed, and then the triangular crowd trmv tbmv trsv tbsv tpmv tpsv, plus the rank updates syr spr spr2 syr2. fifteen of them. she ate πŸ’…

πŸ’œ and the double-precision twin

same energy, d instead of s, block for block:

#define F77_dgemv(...)
#define F77_dgbmv(...)
#define F77_dsymv(...)
#define F77_dsbmv(...)
#define F77_dspmv(...)
#define F77_dtrmv(...)
#define F77_dtbmv(...)
#define F77_dtrsv(...)
#define F77_dtbsv(...)
#define F77_dtpmv(...)
#define F77_dtpsv(...)
#define F77_dsyr(...)
#define F77_dspr(...)
#define F77_dspr2(...)
#define F77_dsyr2(...)

lowkey the symmetry of this list is so satisfying, like yes ma'am give us consistency πŸ¦‹


πŸ¦‹ complex single precision, level 2

now we're in c territory and the names get spicy β€” hemv hbmv hpmv (hermitian bestie), trmv tbmv tpmv trsv tbsv tpsv (triangular), and the hermitian rank updates cher cher2 chpr chpr2:

#define F77_cgemv(...)
#define F77_cgbmv(...)
#define F77_chemv(...)
#define F77_chbmv(...)
#define F77_chpmv(...)
#define F77_ctrmv(...)
#define F77_ctbmv(...)
#define F77_ctpmv(...)
#define F77_ctrsv(...)
#define F77_ctbsv(...)
#define F77_ctpsv(...)
#define F77_cher(...)
#define F77_cher2(...)
#define F77_chpr(...)
#define F77_chpr2(...)

note the h where the real ones had s β€” hermitian vs symmetric, that's the whole vibe check right there πŸ‘‘

πŸ¦‹ complex double precision, level 2

and the z mirror of it, every last one:

#define F77_zgemv(...)
#define F77_zgbmv(...)
#define F77_zhemv(...)
#define F77_zhbmv(...)
#define F77_zhpmv(...)
#define F77_ztrmv(...)
#define F77_ztbmv(...)
#define F77_ztpmv(...)
#define F77_ztrsv(...)
#define F77_ztbsv(...)
#define F77_ztpsv(...)
#define F77_zher(...)
#define F77_zher2(...)
#define F77_zhpr(...)
#define F77_zhpr2(...)

fourteen, matching c line for line, just with a z glow-up 🌈


now the level-3 girls, aka the matrix-matrix ones, and this is where gemmtr ✨appears✨ which is not something you see in every BLAS list, so clock it:

#define F77_sgemm(...)
#define F77_sgemmtr(...)
#define F77_ssymm(...)
#define F77_ssyrk(...)
#define F77_ssyr2k(...)
#define F77_strmm(...)
#define F77_strsm(...)

gemm, gemmtr, symm, syrk, syr2k, trmm, trsm β€” seven for single real, and the double crew is identical:

#define F77_dgemm(...)
#define F77_dgemmtr(...)
#define F77_dsymm(...)
#define F77_dsyrk(...)
#define F77_dsyr2k(...)
#define F77_dtrmm(...)
#define F77_dtrsm(...)

🌸 complex level 3 β€” where it gets rich

ok this block is the main character. you get symm AND hemm, syrk AND herk, syr2k AND her2k β€” both flavours, no picking favourites:

#define F77_cgemm(...)
#define F77_cgemmtr(...)
#define F77_csymm(...)
#define F77_chemm(...)
#define F77_csyrk(...)
#define F77_cherk(...)
#define F77_csyr2k(...)
#define F77_cher2k(...)
#define F77_ctrmm(...)
#define F77_ctrsm(...)

ten of them. ten!! and the z version is the exact same ten with a z:

#define F77_zgemm(...)
#define F77_zgemmtr(...)
#define F77_zsymm(...)
#define F77_zhemm(...)
#define F77_zsyrk(...)
#define F77_zherk(...)
#define F77_zsyr2k(...)
#define F77_zher2k(...)
#define F77_ztrmm(...)
#define F77_ztrsm(...)

and then, last but absolutely not least, the error-handling queen herself:

#define F77_xerbla(...)

xerbla β€” the one that shows up when something goes wrong, no type prefix, just pure accountability 😭

bestie note: that's the whole macro list, every single #define, nothing dropped, nothing merged. if you were worried I'd skip one β€” ma'am, I would never πŸ’€

πŸ’– Functions πŸ’–

okay bestie, this is the big one β€” the whole roster of _base wrappers, every single signature, exactly as written, no cap. it's a long list so hydrate πŸ’§ and pace yourself. also quick heads-up that a bunch of these are carrying a trailing FORTRAN_STRLEN like it's a designer bag πŸ‘œ β€” that's the whole point of the page, iykyk.

  • void F77_xerbla_base (FCHAR, void *, FORTRAN_STRLEN)
  • void F77_srot_base (FINT, float *, FINT, float *, FINT, const float *, const float *)
  • void F77_srotg_base (float *, float *, float *, float *)
  • void F77_srotm_base (FINT, float *, FINT, float *, FINT, const float *)
  • void F77_srotmg_base (float *, float *, float *, const float *, float *)
  • void F77_sswap_base (FINT, float *, FINT, float *, FINT)
  • void F77_scopy_base (FINT, const float *, FINT, float *, FINT)
  • void F77_saxpy_base (FINT, const float *, const float *, FINT, float *, FINT)
  • void F77_sdot_sub_base (FINT, const float *, FINT, const float *, FINT, float *)
  • void F77_sdsdot_sub_base (FINT, const float *, const float *, FINT, const float *, FINT, float *)
  • void F77_sscal_base (FINT, const float *, float *, FINT)
  • void F77_snrm2_sub_base (FINT, const float *, FINT, float *)
  • void F77_sasum_sub_base (FINT, const float *, FINT, float *)
  • void F77_isamax_sub_base (FINT, const float *, FINT, FINT2)

like… the float * energy is immaculate 🌸 and FINT2 is literally right there in the last one, we love a sequel type πŸ’…


  • void F77_drot_base (FINT, double *, FINT, double *, FINT, const double *, const double *)
  • void F77_drotg_base (double *, double *, double *, double *)
  • void F77_drotm_base (FINT, double *, FINT, double *, FINT, const double *)
  • void F77_drotmg_base (double *, double *, double *, const double *, double *)
  • void F77_dswap_base (FINT, double *, FINT, double *, FINT)
  • void F77_dcopy_base (FINT, const double *, FINT, double *, FINT)
  • void F77_daxpy_base (FINT, const double *, const double *, FINT, double *, FINT)
  • void F77_dsdot_sub_base (FINT, const float *, FINT, const float *, FINT, double *)
  • void F77_ddot_sub_base (FINT, const double *, FINT, const double *, FINT, double *)
  • void F77_dscal_base (FINT, const double *, double *, FINT)
  • void F77_dnrm2_sub_base (FINT, const double *, FINT, double *)
  • void F77_dasum_sub_base (FINT, const double *, FINT, double *)
  • void F77_idamax_sub_base (FINT, const double *, FINT, FINT2)

the way dsdot is out here with float pointers but a double * at the end β€” not me noticing, not me saying anything πŸ™ˆ


  • void F77_crotg_base (void *, void *, float *, void *)
  • void F77_csrot_base (FINT, void *X, FINT, void *, FINT, const float *, const float *)
  • void F77_cswap_base (FINT, void *, FINT, void *, FINT)
  • void F77_ccopy_base (FINT, const void *, FINT, void *, FINT)
  • void F77_caxpy_base (FINT, const void *, const void *, FINT, void *, FINT)
  • void F77_cdotc_sub_base (FINT, const void *, FINT, const void *, FINT, void *)
  • void F77_cdotu_sub_base (FINT, const void *, FINT, const void *, FINT, void *)
  • void F77_cscal_base (FINT, const void *, void *, FINT)
  • void F77_icamax_sub_base (FINT, const void *, FINT, FINT2)
  • void F77_csscal_base (FINT, const float *, void *, FINT)
  • void F77_scnrm2_sub_base (FINT, const void *, FINT, float *)
  • void F77_scasum_sub_base (FINT, const void *, FINT, float *)
  • void F77_scabs1_sub_base (const void *, float *)

void * everywhere bestie β€” it's giving "we don't talk about the type" 😭 and F77_csrot_base is out here naming its pointer X like a main character. iconic.


  • void F77_zrotg_base (void *, void *, double *, void *)
  • void F77_zdrot_base (FINT, void *X, FINT, void *, FINT, const double *, const double *)
  • void F77_zswap_base (FINT, void *, FINT, void *, FINT)
  • void F77_zcopy_base (FINT, const void *, FINT, void *, FINT)
  • void F77_zaxpy_base (FINT, const void *, const void *, FINT, void *, FINT)
  • void F77_zdotc_sub_base (FINT, const void *, FINT, const void *, FINT, void *)
  • void F77_zdotu_sub_base (FINT, const void *, FINT, const void *, FINT, void *)
  • void F77_zdscal_base (FINT, const double *, void *, FINT)
  • void F77_zscal_base (FINT, const void *, void *, FINT)
  • void F77_dznrm2_sub_base (FINT, const void *, FINT, double *)
  • void F77_dzasum_sub_base (FINT, const void *, FINT, double *)
  • void F77_izamax_sub_base (FINT, const void *, FINT, FINT2)
  • void F77_dcabs1_sub_base (const void *, double *)

z girlies said "void * in, double * out" and honestly? consistent. slay πŸ’œ


okay and now we get into the ones with FCHAR up front and FORTRAN_STRLEN at the back β€” the level-2 era 🌈 these are the ones where the string-length thing actually shows up in a big way, so pay attention bestie πŸ‘€

  • void F77_sgemv_base (FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT, FORTRAN_STRLEN)
  • void F77_sgbmv_base (FCHAR, FINT, FINT, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT, FORTRAN_STRLEN)
  • void F77_ssymv_base (FCHAR, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT, FORTRAN_STRLEN)
  • void F77_ssbmv_base (FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT, FORTRAN_STRLEN)
  • void F77_sspmv_base (FCHAR, FINT, const float *, const float *, const float *, FINT, const float *, float *, FINT, FORTRAN_STRLEN)
  • void F77_strmv_base (FCHAR, FCHAR, FCHAR, FINT, const float *, FINT, float *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_stbmv_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const float *, FINT, float *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_strsv_base (FCHAR, FCHAR, FCHAR, FINT, const float *, FINT, float *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_stbsv_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const float *, FINT, float *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_stpmv_base (FCHAR, FCHAR, FCHAR, FINT, const float *, float *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_stpsv_base (FCHAR, FCHAR, FCHAR, FINT, const float *, float *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_sger_base (FINT, FINT, const float *, const float *, FINT, const float *, FINT, float *, FINT)
  • void F77_ssyr_base (FCHAR, FINT, const float *, const float *, FINT, float *, FINT, FORTRAN_STRLEN)
  • void F77_sspr_base (FCHAR, FINT, const float *, const float *, FINT, float *, FORTRAN_STRLEN)
  • void F77_sspr2_base (FCHAR, FINT, const float *, const float *, FINT, const float *, FINT, float *, FORTRAN_STRLEN)
  • void F77_ssyr2_base (FCHAR, FINT, const float *, const float *, FINT, const float *, FINT, float *, FINT, FORTRAN_STRLEN)

three FCHARs AND three FORTRAN_STRLENs in the trmv/tbmv/trsv/tbsv/tpmv/tpsv lineup?? it's giving matching set πŸŽ€ obsessed.


  • void F77_dgemv_base (FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT, FORTRAN_STRLEN)
  • void F77_dgbmv_base (FCHAR, FINT, FINT, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT, FORTRAN_STRLEN)
  • void F77_dsymv_base (FCHAR, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT, FORTRAN_STRLEN)
  • void F77_dsbmv_base (FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT, FORTRAN_STRLEN)
  • void F77_dspmv_base (FCHAR, FINT, const double *, const double *, const double *, FINT, const double *, double *, FINT, FORTRAN_STRLEN)
  • void F77_dtrmv_base (FCHAR, FCHAR, FCHAR, FINT, const double *, FINT, double *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_dtbmv_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, FINT, double *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_dtrsv_base (FCHAR, FCHAR, FCHAR, FINT, const double *, FINT, double *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_dtbsv_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, FINT, double *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_dtpmv_base (FCHAR, FCHAR, FCHAR, FINT, const double *, double *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_dtpsv_base (FCHAR, FCHAR, FCHAR, FINT, const double *, double *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_dger_base (FINT, FINT, const double *, const double *, FINT, const double *, FINT, double *, FINT)
  • void F77_dsyr_base (FCHAR, FINT, const double *, const double *, FINT, double *, FINT, FORTRAN_STRLEN)
  • void F77_dspr_base (FCHAR, FINT, const double *, const double *, FINT, double *, FORTRAN_STRLEN)
  • void F77_dspr2_base (FCHAR, FINT, const double *, const double *, FINT, const double *, FINT, double *, FORTRAN_STRLEN)
  • void F77_dsyr2_base (FCHAR, FINT, const double *, const double *, FINT, const double *, FINT, double *, FINT, FORTRAN_STRLEN)

double-precision remix of the exact same energy, we love a franchise πŸ“


  • void F77_cgemv_base (FCHAR, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT, FORTRAN_STRLEN)
  • void F77_cgbmv_base (FCHAR, FINT, FINT, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT, FORTRAN_STRLEN)
  • void F77_chemv_base (FCHAR, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT, FORTRAN_STRLEN)
  • void F77_chbmv_base (FCHAR, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT, FORTRAN_STRLEN)
  • void F77_chpmv_base (FCHAR, FINT, const void *, const void *, const void *, FINT, const void *, void *, FINT, FORTRAN_STRLEN)
  • void F77_ctrmv_base (FCHAR, FCHAR, FCHAR, FINT, const void *, FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_ctbmv_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const void *, FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_ctpmv_base (FCHAR, FCHAR, FCHAR, FINT, const void *, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_ctrsv_base (FCHAR, FCHAR, FCHAR, FINT, const void *, FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_ctbsv_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const void *, FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_ctpsv_base (FCHAR, FCHAR, FCHAR, FINT, const void *, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
  • void F77_cgerc_base (FINT, FINT, const void *, const void *, FINT, const void *, FINT, void *, FINT)
  • void F77_cgeru_base (FINT, FINT, const void *, const void *, FINT, const void *, FINT, void *, FINT)
  • void F77_cher_base (FCHAR, FINT, const float *, const void *, FINT, void *, FINT, FORTRAN_STRLEN)
  • void F77_cher2_base (FCHAR, FINT, const void *, const void *, FINT, const void *, FINT, void *, FINT, FORTRAN_STRLEN)
  • void F77_chpr_base (FCHAR, FINT, const float *, const void *, FINT, void *, FORTRAN_STRLEN)
  • void F77_chpr2_base (FCHAR, FINT, const void *, const void *, FINT, const void *, FINT, void *, FORTRAN_STRLEN)

shoutout to cher, cher2, chpr and chpr2 for sneaking a const float * in among all the void * β€” keeping us on our toes fr fr πŸ’€


  • void F77_zgemv_base (FCHAR, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT, FORTRAN_STRLEN)
  • void F77_zgbmv_base (FCHAR, FINT, FINT, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT, FORTRAN_STRLEN)
  • void F77_zhemv_base (FCHAR, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT, FORTRAN_STRLEN)
  • void F77_zhbmv_base (FCHAR, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT,

and the list keeps going… πŸ‘€

okay the prototype parade keeps marching, no breaks, no mercy πŸ’… pick right back up where we left off:

       void F77_zhpmv_base (FCHAR, FINT, const void *, const void *, const void
           *, FINT, const void *, void *, FINT, FORTRAN_STRLEN)
       void F77_ztrmv_base (FCHAR, FCHAR, FCHAR, FINT, const void *, FINT, void
           *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ztbmv_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const void *,
           FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ztpmv_base (FCHAR, FCHAR, FCHAR, FINT, const void *, void *,
           FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ztrsv_base (FCHAR, FCHAR, FCHAR, FINT, const void *, FINT, void
           *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ztbsv_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const void *,
           FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ztpsv_base (FCHAR, FCHAR, FCHAR, FINT, const void *, void *,
           FINT, FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_zgerc_base (FINT, FINT, const void *, const void *, FINT, const
           void *, FINT, void *, FINT)
       void F77_zgeru_base (FINT, FINT, const void *, const void *, FINT, const
           void *, FINT, void *, FINT)
       void F77_zher_base (FCHAR, FINT, const double *, const void *, FINT,
           void *, FINT, FORTRAN_STRLEN)
       void F77_zher2_base (FCHAR, FINT, const void *, const void *, FINT,
           const void *, FINT, void *, FINT, FORTRAN_STRLEN)
       void F77_zhpr_base (FCHAR, FINT, const double *, const void *, FINT,
           void *, FORTRAN_STRLEN)
       void F77_zhpr2_base (FCHAR, FINT, const void *, const void *, FINT,
           const void *, FINT, void *, FORTRAN_STRLEN)
       void F77_sgemm_base (FCHAR, FCHAR, FINT, FINT, FINT, const float *,
           const float *, FINT, const float *, FINT, const float *, float *,
           FINT, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_sgemmtr_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const float *,
           const float *, FINT, const float *, FINT, const float *, float *,
           FINT, size_t, size_t, size_t)
       void F77_ssymm_base (FCHAR, FCHAR, FINT, FINT, const float *, const
           float *, FINT, const float *, FINT, const float *, float *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ssyrk_base (FCHAR, FCHAR, FINT, FINT, const float *, const
           float *, FINT, const float *, float *, FINT, FORTRAN_STRLEN,
           FORTRAN_STRLEN)
       void F77_ssyr2k_base (FCHAR, FCHAR, FINT, FINT, const float *, const
           float *, FINT, const float *, FINT, const float *, float *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_strmm_base (FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const float
           *, const float *, FINT, float *, FINT, FORTRAN_STRLEN,
           FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_strsm_base (FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const float
           *, const float *, FINT, float *, FINT, FORTRAN_STRLEN,
           FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_dgemm_base (FCHAR, FCHAR, FINT, FINT, FINT, const double *,
           const double *, FINT, const double *, FINT, const double *, double
           *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_dgemmtr_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const double *,
           const double *, FINT, const double *, FINT, const double *, double
           *, FINT, size_t, size_t, size_t)
       void F77_dsymm_base (FCHAR, FCHAR, FINT, FINT, const double *, const
           double *, FINT, const double *, FINT, const double *, double *,
           FINT, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_dsyrk_base (FCHAR, FCHAR, FINT, FINT, const double *, const
           double *, FINT, const double *, double *, FINT, FORTRAN_STRLEN,
           FORTRAN_STRLEN)
       void F77_dsyr2k_base (FCHAR, FCHAR, FINT, FINT, const double *, const
           double *, FINT, const double *, FINT, const double *, double *,
           FINT, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_dtrmm_base (FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const
           double *, const double *, FINT, double *, FINT, FORTRAN_STRLEN,
           FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_dtrsm_base (FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const
           double *, const double *, FINT, double *, FINT, FORTRAN_STRLEN,
           FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_cgemm_base (FCHAR, FCHAR, FINT, FINT, FINT, const void *, const
           void *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_cgemmtr_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const void *,
           const void *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_csymm_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_chemm_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_csyrk_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_cherk_base (FCHAR, FCHAR, FINT, FINT, const float *, const void
           *, FINT, const float *, void *, FINT, FORTRAN_STRLEN,
           FORTRAN_STRLEN)
       void F77_csyr2k_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_cher2k_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, FINT, const float *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ctrmm_base (FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const void
           *, const void *, FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ctrsm_base (FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const void
           *, const void *, FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_zgemm_base (FCHAR, FCHAR, FINT, FINT, FINT, const void *, const
           void *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_zgemmtr_base (FCHAR, FCHAR, FCHAR, FINT, FINT, const void *,
           const void *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_zsymm_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_zhemm_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_zsyrk_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_zherk_base (FCHAR, FCHAR, FINT, FINT, const double *, const
           void *, FINT, const double *, void *, FINT, FORTRAN_STRLEN,
           FORTRAN_STRLEN)
       void F77_zsyr2k_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, FINT, const void *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_zher2k_base (FCHAR, FCHAR, FINT, FINT, const void *, const void
           *, FINT, const void *, FINT, const double *, void *, FINT,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ztrmm_base (FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const void
           *, const void *, FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN,
           FORTRAN_STRLEN, FORTRAN_STRLEN)
       void F77_ztrsm_base (FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const void
           *, const void *, FINT, void *, FINT, FORTRAN_STRLEN, FORTRAN_STRLEN,
           FORTRAN_STRLEN, FORTRAN_STRLEN)

like… that's the whole roster, bestie. s, d, c, z β€” every precision showed up and every single one of them is a _base with its FORTRAN_STRLEN trailing args doing their little thing ✨


πŸŽ€ Macro Definition Documentation πŸŽ€

okay this is the part where the header file goes absolutely feral with #defines and honestly? iconic behavior. every one of these lives in cblas_f77.h, and the line numbers are right there so you can go look at them with your own two eyes πŸ‘€

πŸ’– #define API_SUFFIX( a)

Value:

a

Definition at line 56 of file cblas_f77.h. it literally just hands you back a, no notes, no drama, a whole macro that does vibes only 🫢

🌸 #define BLAS_FORTRAN_STRLEN_END

Definition at line 18 of file cblas_f77.h. no value shown, it's a mystery, it's a mood, it's the macro this whole page is named after πŸ‘‘


πŸ¦‹ #define F77_caxpy( ...)

Value:

F77_caxpy_base(__VA_ARGS__)

Definition at line 274 of file cblas_f77.h.

πŸ¦‹ #define F77_caxpy_base

#define F77_caxpy_base   F77_GLOBAL_SUFFIX(caxpy,CAXPY)

Definition at line 86 of file cblas_f77.h.


πŸ“ #define F77_ccopy( ...)

Value:

F77_ccopy_base(__VA_ARGS__)

Definition at line 273 of file cblas_f77.h.

πŸ“ #define F77_ccopy_base

#define F77_ccopy_base   F77_GLOBAL_SUFFIX(ccopy,CCOPY)

Definition at line 85 of file cblas_f77.h.


πŸ’œ #define F77_cdotc_sub( ...)

Value:

F77_cdotc_sub_base(__VA_ARGS__)

Definition at line 276 of file cblas_f77.h.

πŸ’œ #define F77_cdotc_sub_base

#define F77_cdotc_sub_base   F77_GLOBAL_SUFFIX(cdotcsub,CDOTCSUB)

Definition at line 102 of file cblas_f77.h.


πŸ’œ #define F77_cdotu_sub( ...)

Value:

F77_cdotu_sub_base(__VA_ARGS__)

Definition at line 277 of file cblas_f77.h.

πŸ’œ #define F77_cdotu_sub_base

#define F77_cdotu_sub_base   F77_GLOBAL_SUFFIX(cdotusub,CDOTUSUB)

Definition at line 101 of file cblas_f77.h.


🌈 #define F77_cgbmv( ...)

Value:

F77_cgbmv_base(__VA_ARGS__, 1)

Definition at line 356 of file cblas_f77.h.

🌈 #define F77_cgbmv_base

#define F77_cgbmv_base   F77_GLOBAL_SUFFIX(cgbmv,CGBMV)

Definition at line 175 of file cblas_f77.h.

see that lil 1 getting tacked on the end? bestie that is the whole bit, and it's giving "I have notes" energy. all the string-taking ones do it πŸ’…

πŸ”₯ #define F77_cgemm( ...)

Value:

F77_cgemm_base(__VA_ARGS__, 1, 1)

Definition at line 415 of file cblas_f77.h.

πŸ”₯ #define F77_cgemm_base

#define F77_cgemm_base   F77_GLOBAL_SUFFIX(cgemm,CGEMM)

Definition at line 213 of file cblas_f77.h.


πŸ”₯ #define F77_cgemmtr( ...)

Value:

F77_cgemmtr_base(__VA_ARGS__, 1, 1, 1)

Definition at line 416 of file cblas_f77.h.

πŸ”₯ #define F77_cgemmtr_base

#define F77_cgemmtr_base   F77_GLOBAL_SUFFIX(cgemmtr,CGEMMTR)

Definition at line 214 of file cblas_f77.h.


⭐ #define F77_cgemv( ...)

Value:

F77_cgemv_base(__VA_ARGS__, 1)

Definition at line 355 of file cblas_f77.h.

⭐ #define F77_cgemv_base

#define F77_cgemv_base   F77_GLOBAL_SUFFIX(cgemv,CGEMV)

Definition at line 174 of file cblas_f77.h.


πŸ’€ #define F77_cgerc( ...)

Value:

F77_cgerc_base(__VA_ARGS__)

Definition at line 306 of file cblas_f77.h.

πŸ’€ #define F77_cgerc_base

#define F77_cgerc_base   F77_GLOBAL_SUFFIX(cgerc,CGERC)

Definition at line 144 of file cblas_f77.h.


πŸ’€ #define F77_cgeru( ...)

Value:

F77_cgeru_base(__VA_ARGS__)

Definition at line 307 of file cblas_f77.h.

πŸ’€ #define F77_cgeru_base

#define F77_cgeru_base   F77_GLOBAL_SUFFIX(cgeru,CGERU)

Definition at line 143 of file cblas_f77.h.


🐚 #define F77_chbmv( ...)

Value:

F77_chbmv_base(__VA_ARGS__, 1)

Definition at line 358 of file cblas_f77.h.

🐚 #define F77_chbmv_base

#define F77_chbmv_base   F77_GLOBAL_SUFFIX(chbmv,CHBMV)

Definition at line 141 of file cblas_f77.h.


πŸŽ€ #define F77_chemm( ...)

Value:

F77_chemm_base(__VA_ARGS__, 1, 1)

Definition at line 418 of file cblas_f77.h.

πŸŽ€ #define F77_chemm_base

#define F77_chemm_base   F77_GLOBAL_SUFFIX(chemm,CHEMM)

Definition at line 193 of file cblas_f77.h.


🧚 #define F77_chemv( ...)

Value:

F77_chemv_base(__VA_ARGS__, 1)

Definition at line 357 of file cblas_f77.h.

🧚 #define F77_chemv_base

#define F77_chemv_base   F77_GLOBAL_SUFFIX(chemv,CHEMV)

Definition at line 140 of file cblas_f77.h.


πŸ’ #define F77_cher( ...)

Value:

F77_cher_base(__VA_ARGS__, 1)

Definition at line 366 of file cblas_f77.h.

and we're cutting it there β€” the #define list keeps going, so don't you dare close the tab 😀

  • #define F77_cher2( ...) β€” value is F77_cher2_base(__VA_ARGS__, 1), defined at line 367 of cblas_f77.h 🌸
  • #define F77_cher2_base β€” value is F77_GLOBAL_SUFFIX(cher2,CHER2), defined at line 147 of cblas_f77.h ✨
  • #define F77_cher2k( ...) β€” value is F77_cher2k_base(__VA_ARGS__, 1, 1), defined at line 422 of cblas_f77.h πŸ¦‹
  • #define F77_cher2k_base β€” value is F77_GLOBAL_SUFFIX(cher2k,CHER2K), defined at line 195 of cblas_f77.h πŸ’…
  • #define F77_cher_base β€” value is F77_GLOBAL_SUFFIX(cher,CHER), defined at line 145 of cblas_f77.h πŸŽ€
  • #define F77_cherk( ...) β€” value is F77_cherk_base(__VA_ARGS__, 1, 1), defined at line 420 of cblas_f77.h 🌈
  • #define F77_cherk_base β€” value is F77_GLOBAL_SUFFIX(cherk,CHERK), defined at line 194 of cblas_f77.h ⭐
  • #define F77_chpmv( ...) β€” value is F77_chpmv_base(__VA_ARGS__, 1), defined at line 359 of cblas_f77.h πŸ’œ
  • #define F77_chpmv_base β€” value is F77_GLOBAL_SUFFIX(chpmv,CHPMV), defined at line 142 of cblas_f77.h 🫢
  • #define F77_chpr( ...) β€” value is F77_chpr_base(__VA_ARGS__, 1), defined at line 368 of cblas_f77.h πŸ“
  • #define F77_chpr2( ...) β€” value is F77_chpr2_base(__VA_ARGS__, 1), defined at line 369 of cblas_f77.h 🧚
  • #define F77_chpr2_base β€” value is F77_GLOBAL_SUFFIX(chpr2,CHPR2), defined at line 148 of cblas_f77.h πŸ”₯
  • #define F77_chpr_base β€” value is F77_GLOBAL_SUFFIX(chpr,CHPR), defined at line 146 of cblas_f77.h πŸ’–
  • #define F77_crotg( ...) β€” value is F77_crotg_base(__VA_ARGS__), defined at line 270 of cblas_f77.h ✨
bestie notice: this one has no trailing 1 at all β€” just the plain pass-through, ok? don't go adding args that aren't there πŸ™ˆ
  • #define F77_crotg_base β€” value is F77_GLOBAL_SUFFIX(crotg, CROTG), defined at line 114 of cblas_f77.h πŸ’…
  • #define F77_cscal( ...) β€” value is F77_cscal_base(__VA_ARGS__), defined at line 278 of cblas_f77.h 🌸
  • #define F77_cscal_base β€” value is F77_GLOBAL_SUFFIX(cscal,CSCAL), defined at line 97 of cblas_f77.h πŸ¦‹
  • #define F77_csrot( ...) β€” value is F77_csrot_base(__VA_ARGS__), defined at line 271 of cblas_f77.h πŸŽ€
  • #define F77_csrot_base β€” value is F77_GLOBAL_SUFFIX(csrot, CSROT), defined at line 115 of cblas_f77.h 🌈
  • #define F77_csscal( ...) β€” value is F77_csscal_base(__VA_ARGS__), defined at line 280 of cblas_f77.h ⭐
  • #define F77_csscal_base β€” value is F77_GLOBAL_SUFFIX(csscal,CSSCAL), defined at line 99 of cblas_f77.h πŸ’œ
  • #define F77_cswap( ...) β€” value is F77_cswap_base(__VA_ARGS__), defined at line 272 of cblas_f77.h 🫢
  • #define F77_cswap( ...) β€” value is F77_cswap_base(__VA_ARGS__), defined at line 272 of cblas_f77.h 🫢
no fr, that's listed twice in the source β€” same macro, same value, same line 272. not a glitch on my end, i'm just not about to delete it πŸ’€
  • #define F77_cswap_base β€” value is F77_GLOBAL_SUFFIX(cswap,CSWAP), defined at line 84 of cblas_f77.h πŸ“
  • #define F77_csymm( ...) β€” value is F77_csymm_base(__VA_ARGS__, 1, 1), defined at line 417 of cblas_f77.h 🧚
  • #define F77_csymm_base β€” value is F77_GLOBAL_SUFFIX(csymm,CSYMM), defined at line 215 of cblas_f77.h πŸ”₯
  • #define F77_csyr2k( ...) β€” value is F77_csyr2k_base(__VA_ARGS__, 1, 1), defined at line 421 of cblas_f77.h πŸ’–
  • #define F77_csyr2k_base β€” value is F77_GLOBAL_SUFFIX(csyr2k,CSYR2K), defined at line 217 of cblas_f77.h ✨
  • #define F77_csyrk( ...) β€” value is F77_csyrk_base(__VA_ARGS__, 1, 1), defined at line 419 of cblas_f77.h πŸ’…
  • #define F77_csyrk_base β€” value is F77_GLOBAL_SUFFIX(csyrk,CSYRK), defined at line 216 of cblas_f77.h 🌸
  • #define F77_ctbmv( ...) β€” value is F77_ctbmv_base(__VA_ARGS__, 1, 1, 1), defined at line 361 of cblas_f77.h πŸ¦‹
  • #define F77_ctbmv_base β€” value is F77_GLOBAL_SUFFIX(ctbmv,CTBMV), defined at line 177 of cblas_f77.h πŸŽ€
  • #define F77_ctbsv( ...) β€” value is F77_ctbsv_base(__VA_ARGS__, 1, 1, 1), defined at line 364 of cblas_f77.h 🌈
  • #define F77_ctbsv_base β€” value is F77_GLOBAL_SUFFIX(ctbsv,CTBSV), defined at line 180 of cblas_f77.h ⭐
  • #define F77_ctpmv( ...) β€” value is F77_ctpmv_base(__VA_ARGS__, 1, 1, 1), defined at line 362 of cblas_f77.h πŸ’œ
  • #define F77_ctpmv_base β€” value is F77_GLOBAL_SUFFIX(ctpmv,CTPMV), defined at line 178 of cblas_f77.h 🫢
  • #define F77_ctpsv( ...) β€” value is F77_ctpsv_base(__VA_ARGS__, 1, 1, 1), defined at line 365 of cblas_f77.h πŸ“
  • #define F77_ctpsv_base β€” value is F77_GLOBAL_SUFFIX(ctpsv,CTPSV), defined at line 181 of cblas_f77.h 🧚
  • #define F77_ctrmm( ...) β€” value is F77_ctrmm_base(__VA_ARGS__, 1, 1, 1, 1), defined at line 423 of cblas_f77.h πŸ”₯
  • #define F77_ctrmm_base β€” value is F77_GLOBAL_SUFFIX(ctrmm,CTRMM), defined at line 218 of cblas_f77.h πŸ’–
  • #define F77_ctrmv( ...) β€” value is F77_ctrmv_base(__VA_ARGS__, 1, 1, 1), defined at line 360 of cblas_f77.h ✨
  • #define F77_ctrmv_base β€” value is F77_GLOBAL_SUFFIX(ctrmv,CTRMV), defined at line 176 of cblas_f77.h πŸ’…
  • #define F77_ctrsm( ...) β€” value is F77_ctrsm_base(__VA_ARGS__, 1, 1, 1, 1), defined at line 424 of cblas_f77.h 🌸
  • #define F77_ctrsm_base β€” value is F77_GLOBAL_SUFFIX(ctrsm,CTRSM), defined at line 219 of cblas_f77.h πŸ¦‹
  • #define F77_ctrsv( ...) β€” value is F77_ctrsv_base(__VA_ARGS__, 1, 1, 1), defined at line 363 of cblas_f77.h πŸŽ€
  • #define F77_ctrsv_base β€” value is F77_GLOBAL_SUFFIX(ctrsv,CTRSV), defined at line 179 of cblas_f77.h 🌈

ok and now we slide into the d block, aka the double-precision era of the alphabet, and the vibe check basically stays identical πŸ‘‘

  • #define F77_dasum_sub( ...) β€” value is F77_dasum_sub_base(__VA_ARGS__), defined at line 264 of cblas_f77.h ⭐
  • #define F77_dasum_sub_base β€” value is F77_GLOBAL_SUFFIX(dasumsub,DASUMSUB), defined at line 108 of cblas_f77.h πŸ’œ
  • #define F77_daxpy( ...) β€” value is F77_daxpy_base(__VA_ARGS__), defined at line 258 of cblas_f77.h 🫢
  • #define F77_daxpy_base β€” value is F77_GLOBAL_SUFFIX(daxpy,DAXPY), defined at line 82 of cblas_f77.h πŸ“
  • #define F77_dcabs1_sub( ...) β€” value is F77_dcabs1_sub_base(__VA_ARGS__), defined at line 266 of cblas_f77.h 🧚
  • #define F77_dcabs1_sub_base β€” value is F77_GLOBAL_SUFFIX(dcabs1sub, DCABS1SUB), defined at line 119 of cblas_f77.h πŸ”₯
careful with this one β€” the second arg in the suffix call is DCABS1SUB with a lil leading space, exactly like the source. copy it as-is, bestie πŸ™ˆ
  • #define F77_dcopy( ...) β€” value is F77_dcopy_base(__VA_ARGS__), defined at line 257 of cblas_f77.h πŸ’–
  • #define F77_dcopy_base β€” value is F77_GLOBAL_SUFFIX(dcopy,DCOPY), defined at line 81 of cblas_f77.h ✨
  • #define F77_ddot_sub( ...) β€” value is F77_ddot_sub_base(__VA_ARGS__), defined at line 261 of cblas_f77.h πŸ’…
  • #define F77_ddot_sub_base β€” value is F77_GLOBAL_SUFFIX(ddotsub,DDOTSUB), defined at line 93 of cblas_f77.h 🌸
  • #define F77_dgbmv( ...) β€” value is F77_dgbmv_base(__VA_ARGS__, 1), defined at line 338 of cblas_f77.h πŸ¦‹
  • #define F77_dgbmv_base β€” value is F77_GLOBAL_SUFFIX(dgbmv,DGBMV), defined at line 167 of cblas_f77.h πŸŽ€
  • #define F77_dgemm( ...) β€” value is F77_dgemm_base(__VA_ARGS__, 1, 1), defined at line 405 of cblas_f77.h 🌈
  • #define F77_dgemm_base β€” value is F77_GLOBAL_SUFFIX(dgemm,DGEMM), defined at line 206 of cblas_f77.h ⭐
  • #define F77_dgemmtr( ...) β€” value is F77_dgemmtr_base(__VA_ARGS__, 1, 1, 1), defined at line 406 of cblas_f77.h πŸ’œ
  • #define F77_dgemmtr_base β€” value is F77_GLOBAL_SUFFIX(dgemmtr,DGEMMTR), defined at line 207 of cblas_f77.h 🫢
  • #define F77_dgemv( ...) β€” value is F77_dgemv_base(__VA_ARGS__, 1), defined at line 337 of cblas_f77.h πŸ“
  • #define F77_dgemv_base β€” value is F77_GLOBAL_SUFFIX(dgemv,DGEMV), defined at line 166 of cblas_f77.h 🧚
  • #define F77_dger( ...) β€” value is F77_dger_base(__VA_ARGS__), defined at line 305 of cblas_f77.h πŸ”₯
  • #define F77_dger_base β€” value is F77_GLOBAL_SUFFIX(dger,DGER), defined at line 135 of cblas_f77.h πŸ’–
  • #define F77_dnrm2_sub( ...) β€” value is F77_dnrm2_sub_base(__VA_ARGS__), defined at line 263 of cblas_f77.h ✨
  • #define F77_dnrm2_sub_base β€” value is F77_GLOBAL_SUFFIX(dnrm2sub,DNRM2SUB), defined at line 107 of cblas_f77.h πŸ’…
  • #define F77_drot( ...) β€” value is F77_drot_base(__VA_ARGS__), defined at line 252 of cblas_f77.h 🌸
  • #define F77_drot_base β€” value is F77_GLOBAL_SUFFIX(drot,DROT), defined at line 74 of cblas_f77.h πŸ¦‹
  • #define F77_drotg( ...) β€” value is F77_drotg_base(__VA_ARGS__), defined at line 253 of cblas_f77.h πŸŽ€
  • #define F77_drotg_base β€” value is F77_GLOBAL_SUFFIX(drotg,DROTG), defined at line 72 of cblas_f77.h 🌈
  • #define F77_drotm( ...) β€” value is F77_drotm_base(__VA_ARGS__), defined at line 254 of cblas_f77.h ⭐
  • #define F77_drotm_base β€” value is F77_GLOBAL_SUFFIX(drotm,DROTM), defined at line 75 of cblas_f77.h πŸ’œ
  • #define F77_drotmg( ...) β€” value is F77_drotmg_base(__VA_ARGS__), defined at line 255 of cblas_f77.h 🫢
  • #define F77_drotmg_base β€” value is F77_GLOBAL_SUFFIX(drotmg,DROTMG), defined at line 73 of cblas_f77.h πŸ“
  • #define F77_dsbmv( ...) β€” value is F77_dsbmv_base(__VA_ARGS__, 1), defined at line 340 of cblas_f77.h 🧚
  • #define F77_dsbmv_base β€” value is F77_GLOBAL_SUFFIX(dsbmv,DSBMV), defined at line 133 of cblas_f77.h πŸ”₯
  • #define F77_dscal( ...) β€” value is F77_dscal_base(__VA_ARGS__), defined at line 262 of cblas_f77.h πŸ’–
  • #define F77_dscal_base β€” value is F77_GLOBAL_SUFFIX(dscal,DSCAL), defined at line 96 of cblas_f77.h ✨
  • #define F77_dsdot_sub( ...) β€” value is F77_dsdot_sub_base(__VA_ARGS__), defined at line 260 of cblas_f77.h πŸ’…
  • #define F77_dsdot_sub_base β€” value is F77_GLOBAL_SUFFIX(dsdotsub,DSDOTSUB), defined at line 94 of cblas_f77.h 🌸
  • #define F77_dspmv( ...) β€” value is F77_dspmv_base(__VA_ARGS__, 1), defined at line 341 of cblas_f77.h πŸ¦‹
  • #define F77_dspmv_base β€” value is F77_GLOBAL_SUFFIX(dspmv,DSPMV), defined at line 134 of cblas_f77.h πŸŽ€
  • #define F77_dspr( ...) β€” value is F77_dspr_base(__VA_ARGS__, 1), defined at line 349 of cblas_f77.h 🌈
  • #define F77_dspr2( ...) β€” value is F77_dspr2_base(__VA_ARGS__, 1), defined at line 350 of cblas_f77.h ⭐
  • #define F77_dspr2_base β€” value is F77_GLOBAL_SUFFIX(dspr2,DSPR2), defined at line 139 of cblas_f77.h πŸ’œ
  • #define F77_dspr_base β€” value is F77_GLOBAL_SUFFIX(dspr,DSPR), defined at line 137 of cblas_f77.h 🫢
  • #define F77_dswap( ...) β€” value is F77_dswap_base(__VA_ARGS__), defined at line 256 of cblas_f77.h πŸ“
  • #define F77_dswap( ...) β€” value is F77_dswap_base(__VA_ARGS__), defined at line 256 of cblas_f77.h πŸ“
and yup, F77_dswap is doubled up too β€” identical entry, line 256 twice. iconic copy-paste moment in the header, honestly πŸ’€
  • #define F77_dswap_base β€” value is F77_GLOBAL_SUFFIX(dswap,DSWAP), defined at line 80 of cblas_f77.h 🧚
  • #define F77_dsymm( ...) β€” value is F77_dsymm_base(__VA_ARGS__, 1, 1), defined at line 407 of cblas_f77.h πŸ”₯
  • #define F77_dsymm_base β€” value is F77_GLOBAL_SUFFIX(dsymm,DSYMM), defined at line 208 of cblas_f77.h πŸ’–
  • #define F77_dsymv( ...) β€” value is F77_dsymv_base(__VA_ARGS__, 1), defined at line 339 of cblas_f77.h ✨
  • #define F77_dsymv_base β€” value is F77_GLOBAL_SUFFIX(dsymv,DSYMV), defined at line 132 of cblas_f77.h πŸ’…
  • #define F77_dsyr( ...) β€” value is F77_dsyr_base(__VA_ARGS__, 1), defined at line 348 of cblas_f77.h 🌸
  • #define F77_dsyr2( ...) β€” value is F77_dsyr2_base(__VA_ARGS__, 1), defined at line 351 of cblas_f77.h πŸ¦‹

okay we're still deep in the macro mines, bestie β€” same header file, same alphabetical flow, keep scrolling and don't lose momentum πŸ’…


F77_dsyr2_base

The de-suffixed base name for dsyr2. It just fuses the lowercase Fortran name with the uppercase API name via F77_GLOBAL_SUFFIX, so both worlds stay in sync.

#define F77_dsyr2_base   F77_GLOBAL_SUFFIX(dsyr2,DSYR2)

Line 138 of cblas_f77.h.

F77_dsyr2k

Passes everything straight through and pads two trailing 1s onto the call.

#define F77_dsyr2k( ...)
    F77_dsyr2k_base(__VA_ARGS__, 1, 1)

Line 409 of cblas_f77.h.

F77_dsyr2k_base

The suffix-glued base for dsyr2k.

#define F77_dsyr2k_base   F77_GLOBAL_SUFFIX(dsyr2k,DSYR2K)

Line 210 of cblas_f77.h.

F77_dsyr_base

Base name for dsyr, suffixed the same way.

#define F77_dsyr_base   F77_GLOBAL_SUFFIX(dsyr,DSYR)

Line 136 of cblas_f77.h.

F77_dsyrk

Straight pass-through plus two 1s at the end.

#define F77_dsyrk( ...)
    F77_dsyrk_base(__VA_ARGS__, 1, 1)

Line 408 of cblas_f77.h.

F77_dsyrk_base

Suffix-aware base for dsyrk.

#define F77_dsyrk_base   F77_GLOBAL_SUFFIX(dsyrk,DSYRK)

Line 209 of cblas_f77.h.

F77_dtbmv

Passes the args through, then tacks on three 1s. Yes, three. Count them, bestie πŸ“

#define F77_dtbmv( ...)
    F77_dtbmv_base(__VA_ARGS__, 1, 1, 1)

Line 343 of cblas_f77.h.

F77_dtbmv_base

Base for dtbmv.

#define F77_dtbmv_base   F77_GLOBAL_SUFFIX(dtbmv,DTBMV)

Line 169 of cblas_f77.h.

F77_dtbsv

Same energy as its sibling β€” pass-through plus three 1s.

#define F77_dtbsv( ...)
    F77_dtbsv_base(__VA_ARGS__, 1, 1, 1)

Line 345 of cblas_f77.h.

F77_dtbsv_base

Base for dtbsv.

#define F77_dtbsv_base   F77_GLOBAL_SUFFIX(dtbsv,DTBSV)

Line 172 of cblas_f77.h.

F77_dtpmv

Three trailing 1s again. The dt* crew keeps the same dress code πŸŽ€

#define F77_dtpmv( ...)
    F77_dtpmv_base(__VA_ARGS__, 1, 1, 1)

Line 346 of cblas_f77.h.

F77_dtpmv_base

Base for dtpmv.

#define F77_dtpmv_base   F77_GLOBAL_SUFFIX(dtpmv,DTPMV)

Line 170 of cblas_f77.h.

F77_dtpsv

Pass-through plus three 1s.

#define F77_dtpsv( ...)
    F77_dtpsv_base(__VA_ARGS__, 1, 1, 1)

Line 347 of cblas_f77.h.

F77_dtpsv_base

Base for dtpsv.

#define F77_dtpsv_base   F77_GLOBAL_SUFFIX(dtpsv,DTPSV)

Line 173 of cblas_f77.h.

F77_dtrmm

Now we're at four trailing 1s. Glow up ✨

#define F77_dtrmm( ...)
    F77_dtrmm_base(__VA_ARGS__, 1, 1, 1, 1)

Line 410 of cblas_f77.h.

F77_dtrmm_base

Base for dtrmm.

#define F77_dtrmm_base   F77_GLOBAL_SUFFIX(dtrmm,DTRMM)

Line 211 of cblas_f77.h.

F77_dtrmv

Back down to three 1s β€” triangle business.

#define F77_dtrmv( ...)
    F77_dtrmv_base(__VA_ARGS__, 1, 1, 1)

Line 342 of cblas_f77.h.

F77_dtrmv_base

Base for dtrmv.

#define F77_dtrmv_base   F77_GLOBAL_SUFFIX(dtrmv,DTRMV)

Line 168 of cblas_f77.h.

F77_dtrsm

Four 1s, same as dtrmm β€” they're twins fr fr.

#define F77_dtrsm( ...)
    F77_dtrsm_base(__VA_ARGS__, 1, 1, 1, 1)

Line 411 of cblas_f77.h.

F77_dtrsm_base

Base for dtrsm.

#define F77_dtrsm_base   F77_GLOBAL_SUFFIX(dtrsm,DTRSM)

Line 212 of cblas_f77.h.

F77_dtrsv

Three 1s and vibe check passed βœ…

#define F77_dtrsv( ...)
    F77_dtrsv_base(__VA_ARGS__, 1, 1, 1)

Line 344 of cblas_f77.h.

F77_dtrsv_base

Base for dtrsv.

#define F77_dtrsv_base   F77_GLOBAL_SUFFIX(dtrsv,DTRSV)

Line 171 of cblas_f77.h.

F77_dzasum_sub

Pure pass-through, zero padding. Note the _sub β€” this one's from the sub-family.

#define F77_dzasum_sub( ...)
    F77_dzasum_sub_base(__VA_ARGS__)

Line 297 of cblas_f77.h.

F77_dzasum_sub_base

Here's the interesting bit β€” the suffix pair drops the underscore: dzasumsub and DZASUMSUB. Iconic lowercase-to-uppercase gymnastics 🀸

#define F77_dzasum_sub_base   F77_GLOBAL_SUFFIX(dzasumsub,DZASUMSUB)

Line 112 of cblas_f77.h.

F77_dznrm2_sub

Pass-through, no extra args.

#define F77_dznrm2_sub( ...)
    F77_dznrm2_sub_base(__VA_ARGS__)

Line 296 of cblas_f77.h.

F77_dznrm2_sub_base

Suffix pair is dznrm2sub / DZNRM2SUB.

#define F77_dznrm2_sub_base   F77_GLOBAL_SUFFIX(dznrm2sub,DZNRM2SUB)

Line 111 of cblas_f77.h.

F77_GLOBAL_SUFFIX( a, b)

The main-character macro of this whole file 😀 It wraps both arguments in API_SUFFIX and hands them to F77_GLOBAL_SUFFIX_. Spacing in the parameter list is exactly as written β€” two spaces before b, no cap.

#define F77_GLOBAL_SUFFIX( a,  b)
    F77_GLOBAL_SUFFIX_(API_SUFFIX(a),API_SUFFIX(b))

Line 60 of cblas_f77.h.

F77_GLOBAL_SUFFIX_( a, b)

The second half of the relay β€” just forwards to F77_GLOBAL.

#define F77_GLOBAL_SUFFIX_( a,  b)
    F77_GLOBAL(a,b)

Line 61 of cblas_f77.h.

F77_icamax_sub

Pass-through with no padding.

#define F77_icamax_sub( ...)
    F77_icamax_sub_base(__VA_ARGS__)

Line 279 of cblas_f77.h.

F77_icamax_sub_base

Suffix pair: icamaxsub / ICAMAXSUB.

#define F77_icamax_sub_base   F77_GLOBAL_SUFFIX(icamaxsub,ICAMAXSUB)

Line 87 of cblas_f77.h.

F77_idamax_sub

Pass-through, no padding.

#define F77_idamax_sub( ...)
    F77_idamax_sub_base(__VA_ARGS__)

Line 265 of cblas_f77.h.

F77_idamax_sub_base

Suffix pair: idamaxsub / IDAMAXSUB.

#define F77_idamax_sub_base   F77_GLOBAL_SUFFIX(idamaxsub,IDAMAXSUB)

Line 83 of cblas_f77.h.

F77_INT

Not a function thing at all β€” it's literally just an alias for int32_t. That's the whole macro. Slay, minimalism πŸ’œ

#define F77_INT   int32_t

Line 36 of cblas_f77.h.

F77_isamax_sub

Pass-through, no padding.

#define F77_isamax_sub( ...)
    F77_isamax_sub_base(__VA_ARGS__)

Line 247 of cblas_f77.h.

F77_isamax_sub_base

Suffix pair: isamaxsub / ISAMAXSUB.

#define F77_isamax_sub_base   F77_GLOBAL_SUFFIX(isamaxsub,ISAMAXSUB)

Line 79 of cblas_f77.h.

F77_izamax_sub

Pass-through, no padding.

#define F77_izamax_sub( ...)
    F77_izamax_sub_base(__VA_ARGS__)

Line 298 of cblas_f77.h.

F77_izamax_sub_base

Suffix pair: izamaxsub / IZAMAXSUB.

#define F77_izamax_sub_base   F77_GLOBAL_SUFFIX(izamaxsub,IZAMAXSUB)

Line 91 of cblas_f77.h.

F77_sasum_sub

Pass-through, no padding. (Spot the _sub pattern yet? it's giving very consistent πŸ‘‘)

#define F77_sasum_sub( ...)
    F77_sasum_sub_base(__VA_ARGS__)

Line 246 of cblas_f77.h.

F77_sasum_sub_base

Suffix pair: sasumsub / SASUMSUB.

#define F77_sasum_sub_base   F77_GLOBAL_SUFFIX(sasumsub,SASUMSUB)

Line 106 of cblas_f77.h.

F77_saxpy

Pass-through, no padding.

#define F77_saxpy( ...)
    F77_saxpy_base(__VA_ARGS__)

Line 241 of cblas_f77.h.

F77_saxpy_base

Suffix pair: saxpy / SAXPY.

#define F77_saxpy_base   F77_GLOBAL_SUFFIX(saxpy,SAXPY)

Line 78 of cblas_f77.h.

F77_scabs1_sub

Pass-through, no padding.

#define F77_scabs1_sub( ...)
    F77_scabs1_sub_base(__VA_ARGS__)

Line 248 of cblas_f77.h.

F77_scabs1_sub_base

Heads up: this one has a space after the comma β€” scabs1sub, SCABS1SUB. Keep it, it's part of the look πŸŽ€

#define F77_scabs1_sub_base   F77_GLOBAL_SUFFIX(scabs1sub, SCABS1SUB)

Line 118 of cblas_f77.h.

F77_scasum_sub

Pass-through, no padding.

#define F77_scasum_sub( ...)
    F77_scasum_sub_base(__VA_ARGS__)

Line 282 of cblas_f77.h.

F77_scasum_sub_base

Suffix pair: scasumsub / SCASUMSUB.

#define F77_scasum_sub_base   F77_GLOBAL_SUFFIX(scasumsub,SCASUMSUB)

Line 110 of cblas_f77.h.

F77_scnrm2_sub

Pass-through, no padding.

#define F77_scnrm2_sub( ...)
    F77_scnrm2_sub_base(__VA_ARGS__)

Line 281 of cblas_f77.h.

F77_scnrm2_sub_base

Suffix pair: scnrm2sub / SCNRM2SUB.

#define F77_scnrm2_sub_base   F77_GLOBAL_SUFFIX(scnrm2sub,SCNRM2SUB)

Line 109 of cblas_f77.h.

F77_scopy

Pass-through, no padding.

#define F77_scopy( ...)
    F77_scopy_base(__VA_ARGS__)

Line 240 of cblas_f77.h.

F77_scopy_base

Suffix pair: scopy / SCOPY.

#define F77_scopy_base   F77_GLOBAL_SUFFIX(scopy,SCOPY)

Line 77 of cblas_f77.h.

F77_sdot_sub

Pass-through, no padding.

#define F77_sdot_sub( ...)
    F77_sdot_sub_base(__VA_ARGS__)

Line 242 of cblas_f77.h.

F77_sdot_sub_base

Suffix pair: sdotsub / SDOTSUB.

#define F77_sdot_sub_base   F77_GLOBAL_SUFFIX(sdotsub,SDOTSUB)

Line 92 of cblas_f77.h.

F77_sdsdot_sub

Pass-through, no padding.

#define F77_sdsdot_sub( ...)
    F77_sdsdot_sub_base(__VA_ARGS__)

Line 243 of cblas_f77.h.

F77_sdsdot_sub_base

Suffix pair: sdsdotsub / SDSDOTSUB.

#define F77_sdsdot_sub_base   F77_GLOBAL_SUFFIX(sdsdotsub,SDSDOTSUB)

Line 113 of cblas_f77.h.

F77_sgbmv

One trailing 1. Single-file line of padding, no drama.

#define F77_sgbmv( ...)
    F77_sgbmv_base(__VA_ARGS__, 1)

Line 320 of cblas_f77.h.

F77_sgbmv_base

Suffix pair: sgbmv / SGBMV.

#define F77_sgbmv_base   F77_GLOBAL_SUFFIX(sgbmv,SGBMV)

Line 159 of cblas_f77.h.

F77_sgemm

Two trailing 1s on this one.

#define F77_sgemm( ...)
    F77_sgemm_base(__VA_ARGS__, 1, 1)

Line 395 of cblas_f77.h.

F77_sgemm_base

Suffix pair: sgemm / SGEMM.

#define F77_sgemm_base   F77_GLOBAL_SUFFIX(sgemm,SGEMM)

Line 199 of cblas_f77.h.

F77_sgemmtr

Three trailing 1s β€” yes, sgemmtr is not sgemm, bestie, don't mix them up πŸ™ˆ

#define F77_sgemmtr( ...)
    F77_sgemmtr_base(__VA_ARGS__, 1, 1, 1)

Line 396 of cblas_f77.h.

F77_sgemmtr_base

Suffix pair: sgemmtr / SGEMMTR.

#define F77_sgemmtr_base   F77_GLOBAL_SUFFIX(sgemmtr,SGEMMTR)

Line 200 of cblas_f77.h.

F77_sgemv

One trailing 1.

#define F77_sgemv( ...)
    F77_sgemv_base(__VA_ARGS__, 1)

Line 319 of cblas_f77.h.

F77_sgemv_base

Suffix pair: sgemv / SGEMV.

#define F77_sgemv_base   F77_GLOBAL_SUFFIX(sgemv,SGEMV)

Line 158 of cblas_f77.h.

F77_sger

Pass-through, no padding at all.

#define F77_sger( ...)
    F77_sger_base(__VA_ARGS__)

Line 304 of cblas_f77.h.

F77_sger_base

Suffix pair: sger / SGER.

#define F77_sger_base   F77_GLOBAL_SUFFIX(sger,SGER)

Line 127 of cblas_f77.h.

F77_snrm2_sub

Pass-through, no padding.

#define F77_snrm2_sub( ...)
    F77_snrm2_sub_base(__VA_ARGS__)

Line 245 of cblas_f77.h.

F77_snrm2_sub_base

Suffix pair: snrm2sub / SNRM2SUB.

#define F77_snrm2_sub_base   F77_GLOBAL_SUFFIX(snrm2sub,SNRM2SUB)

Line 105 of cblas_f77.h.

F77_srot

Pass-through, no padding.

#define F77_srot( ...)
    F77_srot_base(__VA_ARGS__)

Line 235 of cblas_f77.h.

F77_srot_base

Suffix pair: srot / SROT.

#define F77_srot_base   F77_GLOBAL_SUFFIX(srot,SROT)

Line 70 of cblas_f77.h.

F77_srotg

Pass-through, no padding.

#define F77_srotg( ...)
    F77_srotg_base(__VA_ARGS__)

Line 236 of cblas_f77.h.

F77_srotg_base

Suffix pair: srotg / SROTG.

#define F77_srotg_base   F77_GLOBAL_SUFFIX(srotg,SROTG)

Line 68 of cblas_f77.h.

F77_srotm

Pass-through, no padding.

#define F77_srotm( ...)
    F77_srotm_base(__VA_ARGS__)

Line 237 of cblas_f77.h.

F77_srotm_base

Suffix pair: srotm / SROTM.

#define F77_srotm_base   F77_GLOBAL_SUFFIX(srotm,SROTM)

Line 71 of cblas_f77.h.

F77_srotmg

Pass-through, no padding.

#define F77_srotmg( ...)
    F77_srotmg_base(__VA_ARGS__)

Line 238 of cblas_f77.h.

F77_srotmg_base

Suffix pair: srotmg / SROTMG.

#define F77_srotmg_base   F77_GLOBAL_SUFFIX(srotmg,SROTMG)

Line 69 of cblas_f77.h.

F77_ssbmv

One trailing 1.

#define F77_ssbmv( ...)
    F77_ssbmv_base(__VA_ARGS__, 1)

Line 322 of cblas_f77.h.

F77_ssbmv_base

Suffix pair: ssbmv / SSBMV.

#define F77_ssbmv_base   F77_GLOBAL_SUFFIX(ssbmv,SSBMV)

Line 125 of cblas_f77.h.

F77_sscal

Pass-through, no padding.

#define F77_sscal( ...)
    F77_sscal_base(__VA_ARGS__)

Line 244 of cblas_f77.h.

F77_sscal_base

Suffix pair: sscal / SSCAL.

#define F77_sscal_base   F77_GLOBAL_SUFFIX(sscal,SSCAL)

Line 95 of cblas_f77.h.

F77_sspmv

One trailing 1.

#define F77_sspmv( ...)
    F77_sspmv_base(__VA_ARGS__, 1)

Line 323 of cblas_f77.h.

F77_sspmv_base

Suffix pair: sspmv / SSPMV.

#define F77_sspmv_base   F77_GLOBAL_SUFFIX(sspmv,SSPMV)

Line 126 of cblas_f77.h.

F77_sspr

One trailing 1.

#define F77_sspr( ...)
    F77_sspr_base(__VA_ARGS__, 1)

Line 331 of cblas_f77.h.

F77_sspr2

One trailing 1. (Notice: F77_sspr2 comes before F77_sspr2_base and before F77_sspr_base in this listing β€” alphabetical quirks, we don't question the collation ✨)

#define F77_sspr2( ...)
    F77_sspr2_base(__VA_ARGS__, 1)

Line 332 of cblas_f77.h.

F77_sspr2_base

Suffix pair: sspr2 / SSPR2.

#define F77_sspr2_base   F77_GLOBAL_SUFFIX(sspr2,SSPR2)

Line 131 of cblas_f77.h.

F77_sspr_base

Suffix pair: sspr / SSPR.

#define F77_sspr_base   F77_GLOBAL_SUFFIX(sspr,SSPR)

Line 129 of cblas_f77.h.

F77_sswap

Pass-through, no padding.

#define F77_sswap( ...)
    F77_sswap_base(__VA_ARGS__)

Line 239 of cblas_f77.h.

F77_sswap_base

Suffix pair: sswap / SSWAP.

#define F77_sswap_base   F77_GLOBAL_SUFFIX(sswap,SSWAP)

Line 76 of cblas_f77.h.

F77_ssymm

Two trailing 1s.

#define F77_ssymm( ...)
    F77_ssymm_base(__VA_ARGS__, 1, 1)

Line 397 of cblas_f77.h.

F77_ssymm_base

Suffix pair: ssymm / SSYMM.

#define F77_ssymm_base   F77_GLOBAL_SUFFIX(ssymm,SSYMM)

Line 201 of cblas_f77.h.

F77_ssymv

One trailing 1.

#define F77_ssymv( ...)
    F77_ssymv_base(__VA_ARGS__, 1)

Line 321 of cblas_f77.h.

F77_ssymv_base

Suffix pair: ssymv / SSYMV.

#define F77_ssymv_base   F77_GLOBAL_SUFFIX(ssymv,SSYMV)

Line 124 of cblas_f77.h.

F77_ssyr

One trailing 1.

#define F77_ssyr( ...)
    F77_ssyr_base(__VA_ARGS__, 1)

Line 330 of cblas_f77.h.

F77_ssyr2

One trailing 1.

#define F77_ssyr2( ...)
    F77_ssyr2_base(__VA_ARGS__, 1)

Line 333 of cblas_f77.h.

F77_ssyr2_base

Suffix pair: ssyr2 / SSYR2.

#define F77_ssyr2_base   F77_GLOBAL_SUFFIX(ssyr2,SSYR2)

Line 130 of cblas_f77.h.

F77_ssyr2k

Two trailing 1s.

#define F77_ssyr2k( ...)
    F77_ssyr2k_base(__VA_ARGS__, 1, 1)

Line 399 of cblas_f77.h.

F77_ssyr2k_base

Suffix pair: ssyr2k / SSYR2K.

#define F77_ssyr2k_base   F77_GLOBAL_SUFFIX(ssyr2k,SSYR2K)

Line 203 of cblas_f77.h.

F77_ssyr_base

Suffix pair: ssyr / SSYR.

#define F77_ssyr_base   F77_GLOBAL_SUFFIX(ssyr,SSYR)

Line 128 of cblas_f77.h.

F77_ssyrk

Two trailing 1s β€” and that's where this batch runs out… but the page keeps going, so don't you dare close the tab πŸ¦‹

#define F77_ssyrk( ...)
    F77_ssyrk_base(__VA_ARGS__, 1, 1)

Line 398 of cblas_f77.h.


  • #define F77_ssyrk_base β€” F77_GLOBAL_SUFFIX(ssyrk,SSYRK)
    • Definition at line 202 of file cblas_f77.h.
  • #define F77_stbmv( ...) β€” bestie it just forwards your stuff and then sprinkles on 1, 1, 1:
F77_stbmv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 325 of file cblas_f77.h.

  • #define F77_stbmv_base β€” F77_GLOBAL_SUFFIX(stbmv,STBMV)
    • Definition at line 161 of file cblas_f77.h.
  • #define F77_stbsv( ...) β€” passes it along plus 1, 1, 1:
F77_stbsv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 327 of file cblas_f77.h.

  • #define F77_stbsv_base β€” F77_GLOBAL_SUFFIX(stbsv,STBSV)
    • Definition at line 164 of file cblas_f77.h.
  • #define F77_stpmv( ...) β€” same lil pattern, 1, 1, 1 on the end:
F77_stpmv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 328 of file cblas_f77.h.

  • #define F77_stpmv_base β€” F77_GLOBAL_SUFFIX(stpmv,STPMV)
    • Definition at line 162 of file cblas_f77.h.
  • #define F77_stpsv( ...) β€” forwards with 1, 1, 1:
F77_stpsv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 329 of file cblas_f77.h.

  • #define F77_stpsv_base β€” F77_GLOBAL_SUFFIX(stpsv,STPSV)
    • Definition at line 165 of file cblas_f77.h.
  • #define F77_strmm( ...) β€” this one's got four trailing ones, main character energy:
F77_strmm_base(__VA_ARGS__, 1, 1, 1, 1)

Definition at line 400 of file cblas_f77.h.

  • #define F77_strmm_base β€” F77_GLOBAL_SUFFIX(strmm,STRMM)
    • Definition at line 204 of file cblas_f77.h.
  • #define F77_strmv( ...) β€” three trailing ones, slay:
F77_strmv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 324 of file cblas_f77.h.

  • #define F77_strmv_base β€” F77_GLOBAL_SUFFIX(strmv,STRMV)
    • Definition at line 160 of file cblas_f77.h.
  • #define F77_strsm( ...) β€” four ones, periodt:
F77_strsm_base(__VA_ARGS__, 1, 1, 1, 1)

Definition at line 401 of file cblas_f77.h.

  • #define F77_strsm_base β€” F77_GLOBAL_SUFFIX(strsm,STRSM)
    • Definition at line 205 of file cblas_f77.h.
  • #define F77_strsv( ...) β€” three ones, iconic:
F77_strsv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 326 of file cblas_f77.h.

  • #define F77_strsv_base β€” F77_GLOBAL_SUFFIX(strsv,STRSV)
    • Definition at line 163 of file cblas_f77.h.
  • #define F77_xerbla( ...) β€” just one lonely 1:
F77_xerbla_base(__VA_ARGS__, 1)

Definition at line 578 of file cblas_f77.h.

  • #define F77_xerbla_base β€” F77_GLOBAL_SUFFIX(xerbla,XERBLA)
    • Definition at line 67 of file cblas_f77.h.

okay entering the z era of the alphabet πŸ’… all complex, all gorgeous

  • #define F77_zaxpy( ...) β€” no extra ones at all, just pure forwarding:
F77_zaxpy_base(__VA_ARGS__)

Definition at line 290 of file cblas_f77.h.

  • #define F77_zaxpy_base β€” F77_GLOBAL_SUFFIX(zaxpy,ZAXPY)
    • Definition at line 90 of file cblas_f77.h.
  • #define F77_zcopy( ...) β€” straight through, no extras:
F77_zcopy_base(__VA_ARGS__)

Definition at line 289 of file cblas_f77.h.

  • #define F77_zcopy_base β€” F77_GLOBAL_SUFFIX(zcopy,ZCOPY)
    • Definition at line 89 of file cblas_f77.h.
  • #define F77_zdotc_sub( ...) β€” forwards as-is:
F77_zdotc_sub_base(__VA_ARGS__)

Definition at line 292 of file cblas_f77.h.

  • #define F77_zdotc_sub_base β€” F77_GLOBAL_SUFFIX(zdotcsub,ZDOTCSUB)
    • Definition at line 104 of file cblas_f77.h.
  • #define F77_zdotu_sub( ...) β€” forwards as-is:
F77_zdotu_sub_base(__VA_ARGS__)

Definition at line 293 of file cblas_f77.h.

  • #define F77_zdotu_sub_base β€” F77_GLOBAL_SUFFIX(zdotusub,ZDOTUSUB)
    • Definition at line 103 of file cblas_f77.h.
  • #define F77_zdrot( ...) β€” forwards as-is:
F77_zdrot_base(__VA_ARGS__)

Definition at line 287 of file cblas_f77.h.

  • #define F77_zdrot_base β€” F77_GLOBAL_SUFFIX(zdrot, ZDROT)
    • Definition at line 117 of file cblas_f77.h.
ngl bestie look closely β€” this one has a space after the comma in (zdrot, ZDROT). Not a typo, that's genuinely how it's written. πŸ™ˆ
  • #define F77_zdscal( ...) β€” forwards as-is:
F77_zdscal_base(__VA_ARGS__)

Definition at line 294 of file cblas_f77.h.

  • #define F77_zdscal_base β€” F77_GLOBAL_SUFFIX(zdscal,ZDSCAL)
    • Definition at line 100 of file cblas_f77.h.
  • #define F77_zgbmv( ...) β€” one trailing 1:
F77_zgbmv_base(__VA_ARGS__, 1)

Definition at line 374 of file cblas_f77.h.

  • #define F77_zgbmv_base β€” F77_GLOBAL_SUFFIX(zgbmv,ZGBMV)
    • Definition at line 183 of file cblas_f77.h.
  • #define F77_zgemm( ...) β€” two trailing ones:
F77_zgemm_base(__VA_ARGS__, 1, 1)

Definition at line 428 of file cblas_f77.h.

  • #define F77_zgemm_base β€” F77_GLOBAL_SUFFIX(zgemm,ZGEMM)
    • Definition at line 220 of file cblas_f77.h.
  • #define F77_zgemmtr( ...) β€” three trailing ones:
F77_zgemmtr_base(__VA_ARGS__, 1, 1, 1)

Definition at line 429 of file cblas_f77.h.

  • #define F77_zgemmtr_base β€” F77_GLOBAL_SUFFIX(zgemmtr,ZGEMMTR)
    • Definition at line 221 of file cblas_f77.h.
  • #define F77_zgemv( ...) β€” one trailing 1:
F77_zgemv_base(__VA_ARGS__, 1)

Definition at line 373 of file cblas_f77.h.

  • #define F77_zgemv_base β€” F77_GLOBAL_SUFFIX(zgemv,ZGEMV)
    • Definition at line 182 of file cblas_f77.h.
  • #define F77_zgerc( ...) β€” clean forward, nothing tacked on:
F77_zgerc_base(__VA_ARGS__)

Definition at line 308 of file cblas_f77.h.

  • #define F77_zgerc_base β€” F77_GLOBAL_SUFFIX(zgerc,ZGERC)
    • Definition at line 153 of file cblas_f77.h.
  • #define F77_zgeru( ...) β€” clean forward too:
F77_zgeru_base(__VA_ARGS__)

Definition at line 309 of file cblas_f77.h.

  • #define F77_zgeru_base β€” F77_GLOBAL_SUFFIX(zgeru,ZGERU)
    • Definition at line 152 of file cblas_f77.h.
  • #define F77_zhbmv( ...) β€” one 1:
F77_zhbmv_base(__VA_ARGS__, 1)

Definition at line 376 of file cblas_f77.h.

  • #define F77_zhbmv_base β€” F77_GLOBAL_SUFFIX(zhbmv,ZHBMV)
    • Definition at line 150 of file cblas_f77.h.
  • #define F77_zhemm( ...) β€” two ones:
F77_zhemm_base(__VA_ARGS__, 1, 1)

Definition at line 431 of file cblas_f77.h.

  • #define F77_zhemm_base β€” F77_GLOBAL_SUFFIX(zhemm,ZHEMM)
    • Definition at line 196 of file cblas_f77.h.
  • #define F77_zhemv( ...) β€” one 1:
F77_zhemv_base(__VA_ARGS__, 1)

Definition at line 375 of file cblas_f77.h.

  • #define F77_zhemv_base β€” F77_GLOBAL_SUFFIX(zhemv,ZHEMV)
    • Definition at line 149 of file cblas_f77.h.
  • #define F77_zher( ...) β€” one 1:
F77_zher_base(__VA_ARGS__, 1)

Definition at line 384 of file cblas_f77.h.

  • #define F77_zher2( ...) β€” one 1:
F77_zher2_base(__VA_ARGS__, 1)

Definition at line 385 of file cblas_f77.h.

  • #define F77_zher2_base β€” F77_GLOBAL_SUFFIX(zher2,ZHER2)
    • Definition at line 156 of file cblas_f77.h.
  • #define F77_zher2k( ...) β€” two ones:
F77_zher2k_base(__VA_ARGS__, 1, 1)

Definition at line 435 of file cblas_f77.h.

  • #define F77_zher2k_base β€” F77_GLOBAL_SUFFIX(zher2k,ZHER2K)
    • Definition at line 198 of file cblas_f77.h.
  • #define F77_zher_base β€” F77_GLOBAL_SUFFIX(zher,ZHER)
    • Definition at line 154 of file cblas_f77.h.
  • #define F77_zherk( ...) β€” two ones:
F77_zherk_base(__VA_ARGS__, 1, 1)

Definition at line 433 of file cblas_f77.h.

  • #define F77_zherk_base β€” F77_GLOBAL_SUFFIX(zherk,ZHERK)
    • Definition at line 197 of file cblas_f77.h.
  • #define F77_zhpmv( ...) β€” one 1:
F77_zhpmv_base(__VA_ARGS__, 1)

Definition at line 377 of file cblas_f77.h.

  • #define F77_zhpmv_base β€” F77_GLOBAL_SUFFIX(zhpmv,ZHPMV)
    • Definition at line 151 of file cblas_f77.h.
  • #define F77_zhpr( ...) β€” one 1:
F77_zhpr_base(__VA_ARGS__, 1)

Definition at line 386 of file cblas_f77.h.

  • #define F77_zhpr2( ...) β€” one 1:
F77_zhpr2_base(__VA_ARGS__, 1)

Definition at line 387 of file cblas_f77.h.

  • #define F77_zhpr2_base β€” F77_GLOBAL_SUFFIX(zhpr2,ZHPR2)
    • Definition at line 157 of file cblas_f77.h.
  • #define F77_zhpr_base β€” F77_GLOBAL_SUFFIX(zhpr,ZHPR)
    • Definition at line 155 of file cblas_f77.h.
  • #define F77_zrotg( ...) β€” clean forward:
F77_zrotg_base(__VA_ARGS__)

Definition at line 286 of file cblas_f77.h.

  • #define F77_zrotg_base β€” F77_GLOBAL_SUFFIX(zrotg, ZROTG)
    • Definition at line 116 of file cblas_f77.h.
another sneaky space after the comma here too β€” (zrotg, ZROTG). iykyk. 🫢
  • #define F77_zscal( ...) β€” clean forward:
F77_zscal_base(__VA_ARGS__)

Definition at line 295 of file cblas_f77.h.

  • #define F77_zscal_base β€” F77_GLOBAL_SUFFIX(zscal,ZSCAL)
    • Definition at line 98 of file cblas_f77.h.
  • #define F77_zswap( ...) β€” clean forward:
F77_zswap_base(__VA_ARGS__)

Definition at line 288 of file cblas_f77.h.

  • #define F77_zswap( ...) β€” okay so this one is listed twice in the source, literally the exact same thing again:
F77_zswap_base(__VA_ARGS__)

Definition at line 288 of file cblas_f77.h.

not me noticing the duplicate πŸ’€ both of them point at line 288, so it's the same definition twice. That's just how the page has it, bestie β€” we don't fix, we report. πŸŽ€
  • #define F77_zswap_base β€” F77_GLOBAL_SUFFIX(zswap,ZSWAP)
    • Definition at line 88 of file cblas_f77.h.
  • #define F77_zsymm( ...) β€” two ones:
F77_zsymm_base(__VA_ARGS__, 1, 1)

Definition at line 430 of file cblas_f77.h.

  • #define F77_zsymm_base β€” F77_GLOBAL_SUFFIX(zsymm,ZSYMM)
    • Definition at line 222 of file cblas_f77.h.
  • #define F77_zsyr2k( ...) β€” two ones:
F77_zsyr2k_base(__VA_ARGS__, 1, 1)

Definition at line 434 of file cblas_f77.h.

  • #define F77_zsyr2k_base β€” F77_GLOBAL_SUFFIX(zsyr2k,ZSYR2K)
    • Definition at line 224 of file cblas_f77.h.
  • #define F77_zsyrk( ...) β€” two ones:
F77_zsyrk_base(__VA_ARGS__, 1, 1)

Definition at line 432 of file cblas_f77.h.

  • #define F77_zsyrk_base β€” F77_GLOBAL_SUFFIX(zsyrk,ZSYRK)
    • Definition at line 223 of file cblas_f77.h.
  • #define F77_ztbmv( ...) β€” three ones:
F77_ztbmv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 379 of file cblas_f77.h.

  • #define F77_ztbmv_base β€” F77_GLOBAL_SUFFIX(ztbmv,ZTBMV)
    • Definition at line 185 of file cblas_f77.h.
  • #define F77_ztbsv( ...) β€” three ones:
F77_ztbsv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 382 of file cblas_f77.h.

  • #define F77_ztbsv_base β€” F77_GLOBAL_SUFFIX(ztbsv,ZTBSV)
    • Definition at line 188 of file cblas_f77.h.
  • #define F77_ztpmv( ...) β€” three ones:
F77_ztpmv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 380 of file cblas_f77.h.

  • #define F77_ztpmv_base β€” F77_GLOBAL_SUFFIX(ztpmv,ZTPMV)
    • Definition at line 186 of file cblas_f77.h.
  • #define F77_ztpsv( ...) β€” three ones:
F77_ztpsv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 383 of file cblas_f77.h.

  • #define F77_ztpsv_base β€” F77_GLOBAL_SUFFIX(ztpsv,ZTPSV)
    • Definition at line 189 of file cblas_f77.h.
  • #define F77_ztrmm( ...) β€” four ones, full send:
F77_ztrmm_base(__VA_ARGS__, 1, 1, 1, 1)

Definition at line 436 of file cblas_f77.h.

  • #define F77_ztrmm_base β€” F77_GLOBAL_SUFFIX(ztrmm,ZTRMM)
    • Definition at line 225 of file cblas_f77.h.
  • #define F77_ztrmv( ...) β€” three ones:
F77_ztrmv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 378 of file cblas_f77.h.

  • #define F77_ztrmv_base β€” F77_GLOBAL_SUFFIX(ztrmv,ZTRMV)
    • Definition at line 184 of file cblas_f77.h.
  • #define F77_ztrsm( ...) β€” four ones:
F77_ztrsm_base(__VA_ARGS__, 1, 1, 1, 1)

Definition at line 437 of file cblas_f77.h.

  • #define F77_ztrsm_base β€” F77_GLOBAL_SUFFIX(ztrsm,ZTRSM)
    • Definition at line 226 of file cblas_f77.h.
  • #define F77_ztrsv( ...) β€” three ones:
F77_ztrsv_base(__VA_ARGS__, 1, 1, 1)

Definition at line 381 of file cblas_f77.h.

  • #define F77_ztrsv_base β€” F77_GLOBAL_SUFFIX(ztrsv,ZTRSV)
    • Definition at line 187 of file cblas_f77.h.

✨ and now the type-ish macros, the little legends ✨

  • #define FCHAR β€” char *
    • Definition at line 43 of file cblas_f77.h.
  • #define FINT β€” const F77_INT *
    • Definition at line 46 of file cblas_f77.h.
  • #define FINT2 β€” F77_INT *
    • Definition at line 47 of file cblas_f77.h.
  • #define FORTRAN_STRLEN β€” size_t
    • Definition at line 21 of file cblas_f77.h.

πŸ’… Function Documentation

okay bestie, here's the whole roster β€” every _base prototype the page lists, in the exact order it lists them, signatures copied character-for-character because we do not paraphrase a function prototype in this house 🫢. Clock the pattern as you scroll: lots of FCHAR args up front and a trailing FORTRAN_STRLEN (or three) at the end β€” and keep an eye out for the two sneaky size_t exceptions, iykyk πŸ‘€

  • void F77_caxpy_base (FINT , const void * , const void * , FINT , void * , FINT ) β€” the axpy of the complex lineup, no string-length drama attached ✨
  • void F77_ccopy_base (FINT , const void * , FINT , void * , FINT ) β€” copy, complex edition πŸ’–
  • void F77_cdotc_sub_base (FINT , const void * , FINT , const void * , FINT , void * ) β€” conjugated dot, result via pointer πŸŽ€
  • void F77_cdotu_sub_base (FINT , const void * , FINT , const void * , FINT , void * ) β€” same shape, no conjugate 🌸
  • void F77_cgbmv_base (FCHAR , FINT , FINT , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” banded matvec, one FCHAR and a trailing FORTRAN_STRLEN at the end of the runway πŸ’…
  • void F77_cgemm_base (FCHAR , FCHAR , FINT , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” two FCHARs, two FORTRAN_STRLENs, iconic symmetry πŸ”₯
  • void F77_cgemmtr_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” three of each, main character energy πŸ‘‘
  • void F77_cgemv_base (FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” matvec moment ⭐
  • void F77_cgerc_base (FINT , FINT , const void * , const void * , FINT , const void * , FINT , void * , FINT ) β€” the conjugated rank-1 update, no FCHAR in sight πŸ¦‹
  • void F77_cgeru_base (FINT , FINT , const void * , const void * , FINT , const void * , FINT , void * , FINT ) β€” its unconjugated twin 🌈
  • void F77_chbmv_base (FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” Hermitian banded matvec πŸ’œ
  • void F77_chemm_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” Hermitian matrix-matrix, double FCHAR glow-up πŸŽ€
  • void F77_chemv_base (FCHAR , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” Hermitian matvec 🧚
  • void F77_cher2_base (FCHAR , FINT , const void * , const void * , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN ) β€” note the FORTRAN_STRLEN chillin' right after the final FINT πŸ’«
  • void F77_cher2k_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const float * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” rank-2k, and yes that's a const float * in the middle, no cap 🌸
  • void F77_cher_base (FCHAR , FINT , const float * , const void * , FINT , void * , FINT , FORTRAN_STRLEN ) β€” rank-1 Hermitian update πŸ“
  • void F77_cherk_base (FCHAR , FCHAR , FINT , FINT , const float * , const void * , FINT , const float * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” rank-k, two const float * cameos πŸ¦‹
  • void F77_chpmv_base (FCHAR , FINT , const void * , const void * , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” packed Hermitian matvec, three const void * in a row 🫢
  • void F77_chpr2_base (FCHAR , FINT , const void * , const void * , FINT , const void * , FINT , void * , FORTRAN_STRLEN ) β€” packed rank-2 πŸ’œ
  • void F77_chpr_base (FCHAR , FINT , const float * , const void * , FINT , void * , FORTRAN_STRLEN ) β€” packed rank-1, short and sweet ✨
  • void F77_crotg_base (void * , void * , float * , void * ) β€” givens construction, zero FCHAR, zero FORTRAN_STRLEN, a clean vibe check πŸ’…
  • void F77_cscal_base (FINT , const void * , void * , FINT ) β€” scale that complex vector πŸ”₯
  • void F77_csrot_base (FINT , void * X, FINT , void * , FINT , const float * , const float * ) β€” bestie, yes, that's really a bare X sitting inside the parameter list, we copy it exactly πŸ™ˆ
  • void F77_csscal_base (FINT , const float * , void * , FINT ) β€” real scalar, complex vector, the crossover episode ⭐
  • void F77_cswap_base (FINT , void * , FINT , void * , FINT ) β€” swap 'em πŸ’€
  • void F77_csymm_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” symmetric mm πŸŽ€
  • void F77_csyr2k_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” rank-2k symmetric 🌸
  • void F77_csyrk_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” rank-k symmetric, note there's only ONE const void * before the void * here πŸ‘€
  • void F77_ctbmv_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular banded matvec, triple FCHAR triple FORTRAN_STRLEN 🌈
  • void F77_ctbsv_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” the solve-y sibling 🫢
  • void F77_ctpmv_base (FCHAR , FCHAR , FCHAR , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” packed triangular matvec, the args get shorter as the FORTRAN_STRLENs pile up πŸ’œ
  • void F77_ctpsv_base (FCHAR , FCHAR , FCHAR , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” packed triangular solve 🧚
  • void F77_ctrmm_base (FCHAR , FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” FOUR FCHARs and FOUR FORTRAN_STRLENs, she ate πŸ‘‘
  • void F77_ctrmv_base (FCHAR , FCHAR , FCHAR , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular matvec πŸ’–
  • void F77_ctrsm_base (FCHAR , FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” the four-by-four flavour again, love that for us πŸ”₯
  • void F77_ctrsv_base (FCHAR , FCHAR , FCHAR , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular solve, periodt ⭐
  • void F77_dasum_sub_base (FINT , const double * , FINT , double * ) β€” and we're in double precision now, asum via pointer πŸ¦‹
  • void F77_daxpy_base (FINT , const double * , const double * , FINT , double * , FINT ) β€” classic axpy, double style 🌸
  • void F77_dcabs1_sub_base (const void * , double * ) β€” tiny two-arg icon, genuinely minimal πŸ’…
  • void F77_dcopy_base (FINT , const double * , FINT , double * , FINT ) β€” copy πŸŽ€
  • void F77_ddot_sub_base (FINT , const double * , FINT , const double * , FINT , double * ) β€” dot, into a pointer πŸ”₯
  • void F77_dgbmv_base (FCHAR , FINT , FINT , FINT , FINT , const double * , const double * , FINT , const double * , FINT , const double * , double * , FINT , FORTRAN_STRLEN ) β€” banded, one FCHAR, one trailing length 🫢
  • void F77_dgemm_base (FCHAR , FCHAR , FINT , FINT , FINT , const double * , const double * , FINT , const double * , FINT , const double * , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” the big one, symmetric in its string args ✨
  • void F77_dgemmtr_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const double * , const double * , FINT , const double * , FINT , const double * , double * , FINT , size_t , size_t , size_t ) β€” ⚠️ bestie look closely: this is one of the TWO prototypes here that end in size_t , size_t , size_t instead of FORTRAN_STRLEN. Don't @ me, just copy it right πŸ’€
  • void F77_dgemv_base (FCHAR , FINT , FINT , const double * , const double * , FINT , const double * , FINT , const double * , double * , FINT , FORTRAN_STRLEN ) β€” double matvec, slay πŸ’œ
  • void F77_dger_base (FINT , FINT , const double * , const double * , FINT , const double * , FINT , double * , FINT ) β€” rank-1, no strings attached 🌈
  • void F77_dnrm2_sub_base (FINT , const double * , FINT , double * ) β€” norm into a pointer 🧚
  • void F77_drot_base (FINT , double * , FINT , double * , FINT , const double * , const double * ) β€” apply that rotation ⭐
  • void F77_drotg_base (double * , double * , double * , double * ) β€” four double pointers and nothing else, a vibe πŸŽ€
  • void F77_drotm_base (FINT , double * , FINT , double * , FINT , const double * ) β€” modified rotation πŸ¦‹
  • void F77_drotmg_base (double * , double * , double * , const double * , double * ) β€” the generator, all pointers πŸ’…
  • void F77_dsbmv_base (FCHAR , FINT , FINT , const double * , const double * , FINT , const double * , FINT , const double * , double * , FINT , FORTRAN_STRLEN ) β€” symmetric banded matvec 🌸
  • void F77_dscal_base (FINT , const double * , double * , FINT ) β€” scale it πŸ”₯
  • void F77_dsdot_sub_base (FINT , const float * , FINT , const float * , FINT , double * ) β€” yes, floats going IN and a double * coming OUT, that's not a typo, that's the signature πŸ™ˆ
  • void F77_dspmv_base (FCHAR , FINT , const double * , const double * , const double * , FINT , const double * , double * , FINT , FORTRAN_STRLEN ) β€” packed symmetric matvec πŸ’œ
  • void F77_dspr2_base (FCHAR , FINT , const double * , const double * , FINT , const double * , FINT , double * , FORTRAN_STRLEN ) β€” packed rank-2 🫢
  • void F77_dspr_base (FCHAR , FINT , const double * , const double * , FINT , double * , FORTRAN_STRLEN ) β€” packed rank-1, and the FORTRAN_STRLEN is right there at the end ✨
  • void F77_dswap_base (FINT , double * , FINT , double * , FINT ) β€” swap 🌈
  • void F77_dsymm_base (FCHAR , FCHAR , FINT , FINT , const double * , const double * , FINT , const double * , FINT , const double * , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” symmetric mm, double trouble πŸŽ€
  • void F77_dsymv_base (FCHAR , FINT , const double * , const double * , FINT , const double * , FINT , const double * , double * , FINT , FORTRAN_STRLEN ) β€” symmetric matvec 🧚
  • void F77_dsyr2_base (FCHAR , FINT , const double * , const double * , FINT , const double * , FINT , double * , FINT , FORTRAN_STRLEN ) β€” rank-2, with a lone FINT sitting between the last void/double pointer and the length πŸ’«
  • void F77_dsyr2k_base (FCHAR , FCHAR , FINT , FINT , const double * , const double * , FINT , const double * , FINT , const double * , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” rank-2k ⭐
  • void F77_dsyr_base (FCHAR , FINT , const double * , const double * , FINT , double * , FINT , FORTRAN_STRLEN ) β€” rank-1, short king 🌸
  • void F77_dsyrk_base (FCHAR , FCHAR , FINT , FINT , const double * , const double * , FINT , const double * , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” rank-k, notice only one const double * in that middle stretch πŸ’…
  • void F77_dtbmv_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const double * , FINT , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular banded, triple everything πŸ”₯
  • void F77_dtbsv_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const double * , FINT , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” the solve version, identical shape 🫢
  • void F77_dtpmv_base (FCHAR , FCHAR , FCHAR , FINT , const double * , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” packed triangular matvec πŸ’œ
  • void F77_dtpsv_base (FCHAR , FCHAR , FCHAR , FINT , const double * , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” packed triangular solve 🧚
  • void F77_dtrmm_base (FCHAR , FCHAR , FCHAR , FCHAR , FINT , FINT , const double * , const double * , FINT , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” four FCHARs, FOUR lengths, absolute unit πŸ‘‘
  • void F77_dtrmv_base (FCHAR , FCHAR , FCHAR , FINT , const double * , FINT , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular matvec, ate ⭐
  • void F77_dtrsm_base (FCHAR , FCHAR , FCHAR , FCHAR , FINT , FINT , const double * , const double * , FINT , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” the four-length queen again, we stan consistency πŸŽ€
  • void F77_dtrsv_base (FCHAR , FCHAR , FCHAR , FINT , const double * , FINT , double * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular solve, periodt 🌈
  • void F77_dzasum_sub_base (FINT , const void * , FINT , double * ) β€” complex input, double * out, the classic glow-up πŸ¦‹
  • void F77_dznrm2_sub_base (FINT , const void * , FINT , double * ) β€” same energy, norm flavour πŸ’«
  • void F77_icamax_sub_base (FINT , const void * , FINT , FINT2 ) β€” index hunting, and yes that's FINT2 at the end πŸ‘€
  • void F77_idamax_sub_base (FINT , const double * , FINT , FINT2 ) β€” double edition, still FINT2 πŸŽ€
  • void F77_isamax_sub_base (FINT , const float * , FINT , FINT2 ) β€” single precision edition 🌸
  • void F77_izamax_sub_base (FINT , const void * , FINT , FINT2 ) β€” complex edition, FINT2 forever πŸ’œ
  • void F77_sasum_sub_base (FINT , const float * , FINT , float * ) β€” single precision asum, pointer party 🫢
  • void F77_saxpy_base (FINT , const float * , const float * , FINT , float * , FINT ) β€” axpy but float ✨
  • void F77_scabs1_sub_base (const void * , float * ) β€” two args, zero notes, iconic minimalism πŸ’…
  • void F77_scasum_sub_base (FINT , const void * , FINT , float * ) β€” complex in, float out πŸ”₯
  • void F77_scnrm2_sub_base (FINT , const void * , FINT , float * ) β€” norm, float result ⭐
  • void F77_scopy_base (FINT , const float * , FINT , float * , FINT ) β€” copy, obviously πŸ¦‹
  • void F77_sdot_sub_base (FINT , const float * , FINT , const float * , FINT , float * ) β€” dot into a pointer 🌸
  • void F77_sdsdot_sub_base (FINT , const float * , const float * , FINT , const float * , FINT , float * ) β€” check it: TWO const float * up front before the FINT πŸ’«
  • void F77_sgbmv_base (FCHAR , FINT , FINT , FINT , FINT , const float * , const float * , FINT , const float * , FINT , const float * , float * , FINT , FORTRAN_STRLEN ) β€” banded single precision, one FCHAR πŸŽ€
  • void F77_sgemm_base (FCHAR , FCHAR , FINT , FINT , FINT , const float * , const float * , FINT , const float * , FINT , const float * , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” mm, double string args, she's here πŸ’œ
  • void F77_sgemmtr_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const float * , const float * , FINT , const float * , FINT , const float * , float * , FINT , size_t , size_t , size_t ) β€” 🚨 second size_t sighting! Same deal as the d version: it ends in size_t , size_t , size_t, not FORTRAN_STRLEN πŸ’€
  • void F77_sgemv_base (FCHAR , FINT , FINT , const float * , const float * , FINT , const float * , FINT , const float * , float * , FINT , FORTRAN_STRLEN ) β€” matvec, float flavour 🧚
  • void F77_sger_base (FINT , FINT , const float * , const float * , FINT , const float * , FINT , float * , FINT ) β€” and the list closes out on a rank-1 update with nary a FCHAR in sight 🌈
  • void F77_snrm2_sub_base (FINT , const float * , FINT , float * ) β€” the single-precision norm squad, still doing base-level business πŸ’…
  • void F77_srot_base (FINT , float * , FINT , float * , FINT , const float * , const float * ) β€” rotate two float vectors, iconic behavior
  • void F77_srotg_base (float * , float * , float * , float * ) β€” construct those rotation parameters, no cap
  • void F77_srotm_base (FINT , float * , FINT , float * , FINT , const float * ) β€” modified rotation, she's fancy
  • void F77_srotmg_base (float * , float * , float * , const float * , float * ) β€” generate the modified rotation parameters, periodt
  • void F77_ssbmv_base (FCHAR , FINT , FINT , const float * , const float * , FINT , const float * , FINT , const float * , float * , FINT , FORTRAN_STRLEN ) β€” symmetric band matrix Γ— vector, lowkey a whole vibe
  • void F77_sscal_base (FINT , const float * , float * , FINT ) β€” scale that vector, bestie
  • void F77_sspmv_base (FCHAR , FINT , const float * , const float * , const float * , FINT , const float * , float * , FINT , FORTRAN_STRLEN ) β€” symmetric packed matrix Γ— vector, ate
  • void F77_sspr2_base (FCHAR , FINT , const float * , const float * , FINT , const float * , FINT , float * , FORTRAN_STRLEN ) β€” packed symmetric rank-2 update, mmhm
  • void F77_sspr_base (FCHAR , FINT , const float * , const float * , FINT , float * , FORTRAN_STRLEN ) β€” packed symmetric rank-1 update, slay
  • void F77_sswap_base (FINT , float * , FINT , float * , FINT ) β€” swap those vectors, trading places energy
  • void F77_ssymm_base (FCHAR , FCHAR , FINT , FINT , const float * , const float * , FINT , const float * , FINT , const float * , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” symmetric matrix Γ— matrix, two FORTRAN_STRLENs because she's extra
  • void F77_ssymv_base (FCHAR , FINT , const float * , const float * , FINT , const float * , FINT , const float * , float * , FINT , FORTRAN_STRLEN ) β€” symmetric matrix Γ— vector, main character behavior

  • void F77_ssyr2_base (FCHAR , FINT , const float * , const float * , FINT , const float * , FINT , float * , FINT , FORTRAN_STRLEN ) β€” symmetric rank-2 update, back at it again
  • void F77_ssyr2k_base (FCHAR , FCHAR , FINT , FINT , const float * , const float * , FINT , const float * , FINT , const float * , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” symmetric rank-2k update, obsessed
  • void F77_ssyr_base (FCHAR , FINT , const float * , const float * , FINT , float * , FINT , FORTRAN_STRLEN ) β€” symmetric rank-1 update, simple and stunning
  • void F77_ssyrk_base (FCHAR , FCHAR , FINT , FINT , const float * , const float * , FINT , const float * , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” symmetric rank-k update, she's versatile
  • void F77_stbmv_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const float * , FINT , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular band matrix Γ— vector, three FORTRAN_STRLENs, a whole trio 🫢
  • void F77_stbsv_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const float * , FINT , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular band solve, same trio energy
  • void F77_stpmv_base (FCHAR , FCHAR , FCHAR , FINT , const float * , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular packed matrix Γ— vector, iconic
  • void F77_stpsv_base (FCHAR , FCHAR , FCHAR , FINT , const float * , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular packed solve, yes queen
  • void F77_strmm_base (FCHAR , FCHAR , FCHAR , FCHAR , FINT , FINT , const float * , const float * , FINT , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular matrix Γ— matrix, FOUR FORTRAN_STRLENs, highkey showing off
  • void F77_strmv_base (FCHAR , FCHAR , FCHAR , FINT , const float * , FINT , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular matrix Γ— vector, classic
  • void F77_strsm_base (FCHAR , FCHAR , FCHAR , FCHAR , FINT , FINT , const float * , const float * , FINT , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular solve with matrix right-hand side, the four-length finale again πŸ’€
  • void F77_strsv_base (FCHAR , FCHAR , FCHAR , FINT , const float * , FINT , float * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular solve, closing out the single-precision chapter
  • void F77_xerbla_base (FCHAR , void * , FORTRAN_STRLEN ) β€” the error-handling icon herself, respectfully
  • void F77_zaxpy_base (FINT , const void * , const void * , FINT , void * , FINT ) β€” complex y := a*x + y, but make it void * because double complex said trust the process
  • void F77_zcopy_base (FINT , const void * , FINT , void * , FINT ) β€” copy that complex vector, periodt
  • void F77_zdotc_sub_base (FINT , const void * , FINT , const void * , FINT , void * ) β€” conjugated dot product, the _sub_ is giving subroutine
  • void F77_zdotu_sub_base (FINT , const void * , FINT , const void * , FINT , void * ) β€” unconjugated dot product, her unbothered sister
  • void F77_zdrot_base (FINT , void * X, FINT , void * , FINT , const double * , const double * ) β€” real plane rotation for a complex vector, and yes, that X is literally in the signature, keep it exactly like that bestie 😭
  • void F77_zdscal_base (FINT , const double * , void * , FINT ) β€” scale a complex vector by a real double, cross-type slay
  • void F77_zgbmv_base (FCHAR , FINT , FINT , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” general band matrix Γ— vector, complex edition, she's long and she knows it
  • void F77_zgemm_base (FCHAR , FCHAR , FINT , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” the zgemm, the legend, the main event πŸ”₯
  • void F77_zgemmtr_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” zgemm with a triangular twist, three lengths because why not
  • void F77_zgemv_base (FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” general matrix Γ— vector, complex, always invited
  • void F77_zgerc_base (FINT , FINT , const void * , const void * , FINT , const void * , FINT , void * , FINT ) β€” conjugated rank-1 update, she's got range
  • void F77_zgeru_base (FINT , FINT , const void * , const void * , FINT , const void * , FINT , void * , FINT ) β€” unconjugated rank-1 update, equally iconic
  • void F77_zhbmv_base (FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” Hermitian band matrix Γ— vector, bougie
  • void F77_zhemm_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” Hermitian matrix Γ— matrix, two lengths, two moods
  • void F77_zhemv_base (FCHAR , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” Hermitian matrix Γ— vector, she's serving
  • void F77_zher2_base (FCHAR , FINT , const void * , const void * , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN ) β€” Hermitian rank-2 update, glowing
  • void F77_zher2k_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const double * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” Hermitian rank-2k update, and peep the const double * in there, we love a mixed-type moment
  • void F77_zher_base (FCHAR , FINT , const double * , const void * , FINT , void * , FINT , FORTRAN_STRLEN ) β€” Hermitian rank-1 update, again with that real double alpha, iykyk
  • void F77_zherk_base (FCHAR , FCHAR , FINT , FINT , const double * , const void * , FINT , const double * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” Hermitian rank-k update, two real double params, extra and correct
  • void F77_zhpmv_base (FCHAR , FINT , const void * , const void * , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN ) β€” Hermitian packed matrix Γ— vector, packed with personality
  • void F77_zhpr2_base (FCHAR , FINT , const void * , const void * , FINT , const void * , FINT , void * , FORTRAN_STRLEN ) β€” Hermitian packed rank-2 update, serving looks
  • void F77_zhpr_base (FCHAR , FINT , const double * , const void * , FINT , void * , FORTRAN_STRLEN ) β€” Hermitian packed rank-1 update, real alpha, complex everything else
  • void F77_zrotg_base (void * , void * , double * , void * ) β€” complex rotation parameters, double in the mix, no further questions
  • void F77_zscal_base (FINT , const void * , void * , FINT ) β€” scale that complex vector, period
  • void F77_zswap_base (FINT , void * , FINT , void * , FINT ) β€” swap complex vectors, a fair trade
  • void F77_zsymm_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” symmetric complex matrix Γ— matrix, yes she's still here
  • void F77_zsyr2k_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” complex symmetric rank-2k update, consistent queen
  • void F77_zsyrk_base (FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” complex symmetric rank-k update, not a single note missed
  • void F77_ztbmv_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular band matrix Γ— vector, complex, three lengths, all the drama
  • void F77_ztbsv_base (FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular band solve, same cast, same lengths
  • void F77_ztpmv_base (FCHAR , FCHAR , FCHAR , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular packed matrix Γ— vector, complex, packed and pretty
  • void F77_ztpsv_base (FCHAR , FCHAR , FCHAR , FINT , const void * , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular packed solve, flawless
  • void F77_ztrmm_base (FCHAR , FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular complex matrix Γ— matrix, four FORTRAN_STRLENs, absolutely unhinged and correct πŸ’…
  • void F77_ztrmv_base (FCHAR , FCHAR , FCHAR , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular matrix Γ— vector, complex, steady
  • void F77_ztrsm_base (FCHAR , FCHAR , FCHAR , FCHAR , FINT , FINT , const void * , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular solve, matrix right-hand side, four-length baddie
  • void F77_ztrsv_base (FCHAR , FCHAR , FCHAR , FINT , const void * , FINT , void * , FINT , FORTRAN_STRLEN , FORTRAN_STRLEN , FORTRAN_STRLEN ) β€” triangular complex solve, the last one on the list, take a bow πŸŽ€

πŸ‘‘ AUTHOR πŸ‘‘

Generated automatically by Doxygen for LAPACK from the source code.


And that's a wrap, bestie 🌈 β€” this page came from LAPACK, Version 3.12.0, for CBLAS/incl...cblas_f77.h(3), and it's been a whole journey. Go forth and pass those FORTRAN_STRLENs correctly, fr fr πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from