Implement the support for the `_Fcomplex` and `_Dcomplex` types used
by MSVC in place of the standard C99 complex types. This is necessary
to make LAPACK build out of the box with MSVC, since it does not
implement the default C99 types.
See: https://learn.microsoft.com/en-us/cpp/c-runtime-library/complex-math-support
I went for the simplest implementation possible, limiting the changes
to swapping the default types used when MSVC is used as the compiler,
also when `lapack_config.h` is not used. I haven't added
a `LAPACK_COMPLEX_*` ifdef for it, but I can do that if you prefer.
Signed-off-by: Michał Górny <mgorny@quansight.com>
Allows us to use the built-in suffix rules where appropriate.
FORTRAN -> FC (POSIX)
OPTS -> FFLAGS (POSIX)
DRVOPTS -> FFLAGS_DRV
NOOPT -> FFLAGS_NOOPT
LOADER -> FC (use the compiler driver for linking)
LOADOPTS -> LDFLAGS (POSIX)
ARCH -> AR (POSIX)
ARCHFLAGS -> ARFLAGS (POSIX)
cleanobj: Remove object files
cleanlib: Remove libraries
cleanexe: Remove test and example executables
cleantest: Remove test output and core dumps
clean: All of the above
The function converts <in> from <matrix_layout> to opposite layout.
E.g. for upper case (all indices are 0-based):
col-major, upper: a(i,j) is stored in ap[(1 + j)*j/2 + i]
row-major, upper: a(i,j) is stored in ap[(n + n-i+1)*i/2 + j-i]
Order the libraries the same as the Makefiles are ordering them:
tmglib, lapack, xblas, blas.
Fix combinations of USE_XBLAS with BUILD_SINGLE, etc. so that it only
builds the LAPACK extended functions of the desired type and precision.
Remove "OBJ" from variable names that are not lists of objects.
This is mostly a long term maintenance improvement.
Many coding styles require elimination of trailing whitespace, and
many editors and source code management configurations automatically
gobble up whitespace. When these tools gobble up whitespace, it
complicates reviewing the meaningful code changes.
By removing whitespace on one patch, it makes future
code reviews much easier.